久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

sqlserver中怎么實現樹形結構遞歸查詢

142次閱讀
沒有評論

共計 4136 個字符,預計需要花費 11 分鐘才能閱讀完成。

本篇文章為大家展示了 sqlserver 中怎么實現樹形結構遞歸查詢,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

公用表表達式(CTE),是一個在查詢中定義的臨時命名結果集將在 from 子句中使用它。每個 CTE 僅被定義一次(但在其作用域內可以被引用任意次),并且在該查詢生存期間將一直生存??梢允褂?CTE 來執行遞歸操作。創建的語法是:

with  name of you cte (column names)as(actual query)select * from  name of your cte

1、生成數據

-- 菜單目錄結構表  create table tb_menu( id int not null, -- 主鍵 id title varchar(50), -- 標題  parent int --parent id ); -- 父菜單  insert into tb_menu(id, title, parent) values(1,  父菜單 1 ,null); insert into tb_menu(id, title, parent) values(2,  父菜單 2 ,null); insert into tb_menu(id, title, parent) values(3,  父菜單 3 ,null); insert into tb_menu(id, title, parent) values(4,  父菜單 4 ,null); insert into tb_menu(id, title, parent) values(5,  父菜單 5 ,null); -- 一級菜單  insert into tb_menu(id, title, parent) values(6,  一級菜單 6 ,1); insert into tb_menu(id, title, parent) values(7,  一級菜單 7 ,1); insert into tb_menu(id, title, parent) values(8,  一級菜單 8 ,1); insert into tb_menu(id, title, parent) values(9,  一級菜單 9 ,2); insert into tb_menu(id, title, parent) values(10,  一級菜單 10 ,2); insert into tb_menu(id, title, parent) values(11,  一級菜單 11 ,2); insert into tb_menu(id, title, parent) values(12,  一級菜單 12 ,3); insert into tb_menu(id, title, parent) values(13,  一級菜單 13 ,3); insert into tb_menu(id, title, parent) values(14,  一級菜單 14 ,3); insert into tb_menu(id, title, parent) values(15,  一級菜單 15 ,4); insert into tb_menu(id, title, parent) values(16,  一級菜單 16 ,4); insert into tb_menu(id, title, parent) values(17,  一級菜單 17 ,4); insert into tb_menu(id, title, parent) values(18,  一級菜單 18 ,5); insert into tb_menu(id, title, parent) values(19,  一級菜單 19 ,5); insert into tb_menu(id, title, parent) values(20,  一級菜單 20 ,5); -- 二級菜單  insert into tb_menu(id, title, parent) values(21,  二級菜單 21 ,6); insert into tb_menu(id, title, parent) values(22,  二級菜單 22 ,6); insert into tb_menu(id, title, parent) values(23,  二級菜單 23 ,7); insert into tb_menu(id, title, parent) values(24,  二級菜單 24 ,7); insert into tb_menu(id, title, parent) values(25,  二級菜單 25 ,8); insert into tb_menu(id, title, parent) values(26,  二級菜單 26 ,9); insert into tb_menu(id, title, parent) values(27,  二級菜單 27 ,10); insert into tb_menu(id, title, parent) values(28,  二級菜單 28 ,11); insert into tb_menu(id, title, parent) values(29,  二級菜單 29 ,12); insert into tb_menu(id, title, parent) values(30,  二級菜單 30 ,13); insert into tb_menu(id, title, parent) values(31,  二級菜單 31 ,14); insert into tb_menu(id, title, parent) values(32,  二級菜單 32 ,15); insert into tb_menu(id, title, parent) values(33,  二級菜單 33 ,16); insert into tb_menu(id, title, parent) values(34,  二級菜單 34 ,17); insert into tb_menu(id, title, parent) values(35,  二級菜單 35 ,18); insert into tb_menu(id, title, parent) values(36,  二級菜單 36 ,19); insert into tb_menu(id, title, parent) values(37,  二級菜單 37 ,20); -- 三級菜單  insert into tb_menu(id, title, parent) values(38,  三級菜單 38 ,21); insert into tb_menu(id, title, parent) values(39,  三級菜單 39 ,22); insert into tb_menu(id, title, parent) values(40,  三級菜單 40 ,23); insert into tb_menu(id, title, parent) values(41,  三級菜單 41 ,24); insert into tb_menu(id, title, parent) values(42,  三級菜單 42 ,25); insert into tb_menu(id, title, parent) values(43,  三級菜單 43 ,26); insert into tb_menu(id, title, parent) values(44,  三級菜單 44 ,27); insert into tb_menu(id, title, parent) values(45,  三級菜單 45 ,28); insert into tb_menu(id, title, parent) values(46,  三級菜單 46 ,28); insert into tb_menu(id, title, parent) values(47,  三級菜單 47 ,29); insert into tb_menu(id, title, parent) values(48,  三級菜單 48 ,30); insert into tb_menu(id, title, parent) values(49,  三級菜單 49 ,31); insert into tb_menu(id, title, parent) values(50,  三級菜單 50 ,31); commit;

2. 查找所有上級節點

-- 查詢樹狀結構某節點 (44) 的上級所有根節點  with cte_parent(id,title,parent) as ( -- 起始條件  select id,title,parent from tb_menu where id = 44 -- 列出子節點查詢條件  union all -- 遞歸條件  select a.id,a.title,a.parent from tb_menu a inner join cte_parent b -- 執行遞歸,這里就要理解下了  on a.id=b.parent ) select * from cte_parent;

3. 查找下級節點帶 level

-- 查詢樹狀結構某節點下的所有子節點( with cte_child(id,title,parent,level) as ( -- 起始條件  select id,title,parent,0 as level from tb_menu where id = 6-- 列出父節點查詢條件  union all -- 遞歸條件  select a.id,a.title,a.parent,b.level+1 from tb_menu a inner join cte_child b on ( a.parent=b.id) ) select * from cte_child;

上述內容就是 sqlserver 中怎么實現樹形結構遞歸查詢,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-03發表,共計4136字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 樟树市| 泸定县| 开封市| 互助| 内乡县| 宁海县| 松阳县| 东宁县| 娄烦县| 吴堡县| 高要市| 集贤县| 青海省| 黎川县| 吉木乃县| 清丰县| 蒲城县| 靖宇县| 攀枝花市| 将乐县| 嘉鱼县| 佛坪县| 边坝县| 南投市| 鄂伦春自治旗| 新安县| 枝江市| 新野县| 高密市| 上栗县| 宿州市| 红安县| 中牟县| 瓦房店市| 泰兴市| 卓资县| 和政县| 许昌县| 石林| 沂源县| 女性|