T-SQL使用遞迴的方式來查詢同一資料表
最近要調整公司原有系統機制的時候,由於資料架構的關係不得以必須使用到SQL來遞迴查詢一些資料,一開始我的想法本來是跟程式的觀念一下寫一個Function然後遞迴呼叫自己,但想來想去覺得這樣好像怪怪的,資料量大的時候怕會有效能問題,於是就上Google查了一下,果然有SQL本身就有提供類似遞迴的語法(SQL Server2005+的版本才支援)。
相關的說明就不多說了,請自行參閱MSDN說明
相關的說明就不多說了,請自行參閱MSDN說明
--tempTable搜尋出來的暫存表格 --grouptable搜尋的主表--> id:主表ID | parentid:上階部門ID | code:代碼(僅顯示用) with tempTable (id,parentid,code) as ( --先查出首先要查詢的第一個節點 select id,parentid,code from grouptable where id='D004' union all --將主表與暫存表Join,並且找出對應關係 select a.id,a.code,a.parentid from grouptable a inner join tempTable b on a.parentid=b.id ) --找出遞迴查詢出來的結果 select * from tempTable order by dept_id
留言
張貼留言
您好,我是 Lawrence,這裡是我的開發筆記的網誌,如果你對我的文章有任何疑問或者有錯誤的話,歡迎留言讓我知道。