在樹形結構表查詢中用得最多的就是查詢指定分類的所有下級分類,這個性能比較好的解決方案是為分類加一個編碼(路徑)把父級的ID都拼接上,最后通過like 'x%'就能把所有下級分類select出來。但是有時也會遇到反過來,找出指定分類的所有上級分類,這個情況尤其在分銷或類傳銷的系統中最常見,因為他們分成都是上級分成,所以要找出指定人的上級集合。
下面分享一下我的解決方案(只用一條SQL語句。不用存儲過程、函數):
有下面所在的新聞分類表。
ParentID為父級的ID。
下面要找出ID為52的所有上級分類,代碼如下:
;with Tree as ( select * from CMS_NewsCategory where CID=52 union all select a.* from CMS_NewsCategory a join Tree b on a.CID=b.ParentID ) select * from Tree