在一个表中有 ID、Title 和 ParentID 列。ParentID 用于同一表中被视为其父项的条目的 ID - 因此 ParentID 为 NULL 的任何条目本身就是父项。
我需要一个查询,它将遍历每个父级并列出它下面的任何子级(最好用连字符或其他东西表示它的从属)有人知道如何做到这一点或如何为我指明正确的方向吗?
(我研究了 T-SQL 并阅读了许多类似的在线问题,但是我的 SQL 不够清晰,无法理解它,所以我非常感谢一些指针!)
在一个表中有 ID、Title 和 ParentID 列。ParentID 用于同一表中被视为其父项的条目的 ID - 因此 ParentID 为 NULL 的任何条目本身就是父项。
我需要一个查询,它将遍历每个父级并列出它下面的任何子级(最好用连字符或其他东西表示它的从属)有人知道如何做到这一点或如何为我指明正确的方向吗?
(我研究了 T-SQL 并阅读了许多类似的在线问题,但是我的 SQL 不够清晰,无法理解它,所以我非常感谢一些指针!)
这个给你!
WITH n(ID, Title) AS
(SELECT ID, Title
FROM YourTable
WHERE ID = (SELECT TOP 1 ID FROM YourTable WHERE ParentID IS NULL)
UNION ALL
SELECT nplus1.ID, nplus1.Title
FROM YourTable as nplus1, n
WHERE n.ID = nplus1.ParentID)
SELECT ID, Title FROM n
要从自引用表中获取层次结构数据,可以在 sql 2008 中使用 WITH 语法
WITH n(ID) AS
(SELECT ID FROM YourTable
UNION ALL
SELECT nplus1.ID
FROM YourTable as nplus1, n
WHERE n.ID = nplus1.ParentID)
SELECT ID FROM n