1. 程式人生 > >T-SQL 語句——CTE 遞迴獲取當前使用者及其所有下級使用者

T-SQL 語句——CTE 遞迴獲取當前使用者及其所有下級使用者

CREATE TABLE #t(
	Id INT NOT NULL PRIMARY KEY IDENTITY,
	Name NVARCHAR(20) NOT NULL,
	ParentId INT NULL DEFAULT(NULL)
)
INSERT INTO #t VALUES('張三',NULL),('李四',1),('王五',2),('趙六',1),('田七',3)
SELECT * FROM #t
GO
WITH cte(Id,Name,ParentId,Level) AS(
	SELECT Id,Name,ParentId,0 Level FROM #t WHERE Id = @parentId 
	UNION ALL
	SELECT #t.*,cte.Level+1 FROM #t  JOIN cte ON cte.Id = #t.ParentId
)
SELECT * FROM cte
GO
DROP TABLE #t