SQL读取树型所有下级或所有上级
生活随笔
收集整理的這篇文章主要介紹了
SQL读取树型所有下级或所有上级
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在編程或構建中,可能會遇到常常需要根據樹型某個節點,讀取其所有上級或所有下級的情況。然后綁定到樹型部件顯示。
在Oracle中,可以用start with ... connect by prior ...來實現。
具體寫法是:
查詢下級:
查詢下級:
select?*?from?sa_dept_dict?start?with?dept_id=2170?connect?by?prior?upper_id=dept_ID?order?by?SORT_ORDER在SQL SERVER 中就要略復雜一些了。需要用With....AS...語句,這個語句也叫做子查詢部分(subquery factoring),可以讓你做很多事情,定義一個SQL片斷,該SQL片斷會
被整個SQL語句所用到。有的時候,是為了讓SQL語句的可讀性更高些,也有可能是在UNION ALL的不同部分,作為提供數據的部分。
下面我們就用with 結合 union 來查詢樹型的上級和下級:
查詢下級:
with?tree?as?(select?*?from?sa_dept_dict?where?dept_id=2016?union?all?select?a.*?from?sa_dept_dict?as?a,tree?as?b?where?b.dept_id=a.upper_id?)?select?*?from?tree?order?by?sort_order查詢上級:
with?tree?as?(select?*?from?sa_dept_dict?where?dept_id=2016?union?all?select?a.*?from?sa_dept_dict?as?a,tree?as?b?where?a.dept_id=b.upper_id?)?select?*?from?tree?order?by?sort_order?
原文出處:http://bbs.delit.cn/thread-132-1-1.html
轉載請注明出處:
撰寫人:度量科技?http://www.delit.cn
轉載于:https://blog.51cto.com/delit/1703494
總結
以上是生活随笔為你收集整理的SQL读取树型所有下级或所有上级的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 现在不使用ZeroClipboard我们
- 下一篇: [C++] STACK_Principl