一條SQL查回整棵樹

2021-08-29 05:45:55 字數 1113 閱讀 5242

[code]

drop table if exists tree;

/*tree_level表示樹的等級,使用兩位表示一級(兩位一般可以滿足應用,如果不夠,你可以使用3位或4位表示一級)

示例: 01為一級,則01的下一級節點為0101,0102,01xx,**則表示為0101xx,

*/create table tree (

id int(11) not null auto_increment,

tree_level varchar(11) default null,

primary key (id)

);[/code]

[code]

--測試資料

insert into tree values (1, '01');

insert into tree values (2, '0101');

insert into tree values (3, '0102');

insert into tree values (4, '010101');

insert into tree values (5, '010102');

insert into tree values (6, '02');

insert into tree values (7, '0201');

insert into tree values (8, '0202');

insert into tree values (9, '020101');

insert into tree values (10,'020102');

insert into tree values (11,'020201');

[/code]

[code]

--查詢01的所有子節點

select * from tree where tree_level like '01%';

--查詢'010101' 的所有父節點

select * from tree where '010101' like concat(tree_level,'%');

[/code]

效能問題? :),你的樹一般不會很深吧,使用兩位也是考慮一般足夠使用,加上索引,應該不差

一條sql 分類彙總

表結構 stuid stuname stucourse stugrade 001 a 語文 88 002 b 語文 89 003 a 數學 98 004 b 數學 100 005 a 英語 87 006 b 英語 86 mysql select groupid,stuid,stuname,cours...

一條SQL語句研究

現有 select from t where a in 5,3,2,1,8,9,30.假設 a 是主鍵,in裡面的引數是唯一的。現要求輸出的結果集按照 in 提供的引數順序排序。而不是按照a本身的排序規則排序?另 如果不要求使用臨時表或表變數,那麼又有什麼辦法實現。臨時表方案參卡 create ta...

一條SQL的改寫

最近需求中需要實現這樣乙個功能 找主活動是未鎖定的,且已確認的子活動資料,表中資料的分布是這樣的 表中資料存放結構 主活動1 沒鎖定 子活動 主11 已確認 子活動 主22 已確認 主活動2 鎖定 子活動 主21 未確認 子活動 主22 已確認 1用 not exist實現 select t1.at...