sql中的遞歸


開發的時候有個需求,就是根據前台選擇的編碼,然后查找該節點下所有的結果集,后來百度了一下 sql中 也有遞歸,

先看下結果

with tmps as
(
select * from dbo.t_ew_dutyRelation where parentCode = 'parent2'
union all
SELECT d2.* from tmps
inner join t_ew_dutyRelation d2 on tmps.dutyCode = d2.parentCode
)
SELECT * FROM tmps

 

簡單解釋一下:

with as屬於sql server新特性CTE(Common Table Expression)的關鍵字,用來儲存臨時結果集。常用於代替子查詢。

上面demo中可以理解為,找出父節點為“parent2”的記錄后,存放在臨時表tmps 中,然后臨時表和t_ew_dutyRelation進行內連接,找出它的子記錄。子記錄和第一條記錄union后作為tmps 新的結果集繼續進行內連接,找出新的子記錄。

 

大家如果有什么更好的方法,可以說出來,共同學習!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM