本文實(shí)例講述了sql server實(shí)現(xiàn)遞歸查詢的方法示例。分享給大家供大家參考,具體如下:
有時(shí)候面對(duì)樹結(jié)構(gòu)的數(shù)據(jù)時(shí)需要進(jìn)行遞歸查詢,網(wǎng)上找了一番,參考了各位大神的文章,發(fā)現(xiàn)蠻簡(jiǎn)單的,當(dāng)做個(gè)小筆記方便以后使用
sql server 通過CTE來支持遞歸查詢,這對(duì)查詢樹形或?qū)哟谓Y(jié)構(gòu)的數(shù)據(jù)很有用
一般的樹形表結(jié)構(gòu)如下,相信大家都很熟悉的
id | title | pid |
---|---|---|
1 | 1級(jí)節(jié)點(diǎn) | 0 |
2 | 2級(jí)節(jié)點(diǎn) | 1 |
3 | 3級(jí)節(jié)點(diǎn) | 2 |
4 | 4級(jí)節(jié)點(diǎn) | 3 |
5 | 5級(jí)節(jié)點(diǎn) | 4 |
下面上代碼
----------sql server 遞歸查詢------------查找上級(jí)所有節(jié)點(diǎn)with uCte as( select a.id,a.title,a.pid from tree_table a where id = 3--當(dāng)前節(jié)點(diǎn) union all select k.id,k.title,k.pid from tree_table k inner join uCte c on c.pid = k.id)select * from uCte;--查找上級(jí)所有節(jié)點(diǎn)with dCte as( select a.id,a.title,a.pid from tree_table a where id = 3--當(dāng)前節(jié)點(diǎn) union all select k.id,k.title,k.pid from tree_table k inner join dCte c on c.id = k.pid)select * from dCte;
希望本文所述對(duì)大家SQL Server數(shù)據(jù)庫程序設(shè)計(jì)有所幫助。
新聞熱點(diǎn)
疑難解答
圖片精選