San*_*mas 5 sql sql-server sql-server-2008
我有一个这样的表,同一个表中有一个父子关系
帐号ID | ParentID | 用户名 ---------------------------------------------- 1 | 0 | 根 2 | 1 | 儿童1 3 | 1 | 儿童2 4 | 2 | 儿童3 5 | 4 | 儿童1 6 | 5 | 儿童1 7 | 6 | 儿童1 8 | 6 | 儿童1
因此,当我发送帐户ID 7时,我必须按照孩子,父亲,祖父的顺序获取表格。..因此,对于7,我需要获取所有这样的小块
帐户ID
---------
7
6
5
4
2
1个
您可以使用递归CTE:
declare @childAccID int
set @childAccID = 7
;WITH Rec_CTE
AS(
SELECT 1 AS Level,
tChild.*
FROM dbo.TableName tChild
WHERE tChild.AccountID = @childAccID
UNION ALL
SELECT Level + 1 AS Level,
parent.*
FROM Rec_CTE tParent
INNER JOIN dbo.TableName parent
ON parent.AccountID = tParent.ParentID
)
SELECT * FROM Rec_CTE
ORDER BY Level
Run Code Online (Sandbox Code Playgroud)