很多人可能想要查詢整個樹形表關聯的內容都會通過循環遞歸來查...事實上在微軟在SQL2005或以上版本就能用別的語法進行查詢,下面是示例。
--通過子節點查詢父節點 WITH TREE AS( SELECT * FROM tstructure WHERE id = 6 -- 要查詢的子 id UNION ALL SELECT tstructure.* FROM tstructure, TREE WHERE TREE.parent = tstructure.id ) SELECT * FROM TREE --通過父節點查詢子節點 WITH TREE AS( SELECT * FROM tstructure WHERE parent = 2 -- 要查詢的父 id UNION ALL SELECT tstructure.* FROM tstructure, TREE WHERE tstructure.parent = TREE.id ) SELECT * FROM TREE
來一個我現實中用到的代碼吧
WITH tree AS
(
SELECT * FROM [shar].[t_module] WHERE url='{0}' UNION ALL SELECT [shar].[t_module].* FROM [shar].[t_module], tree WHERE TREE.fid = [shar].[t_module].id
) SELECT distinct * FROM tree order by code desc