需求:一个数据表是树形结构,即id,pid,每条记录会有自己的父级记录。现在要一下把指定记录以及该记录为父级时,所有下级层级记录查询出来。
解决:这里面用到了sqlserver的with as语句以及union all合并
WITH Emp
AS ( SELECT * FROM dbo.Users WHERE ID = '111'
UNION ALL
SELECT d.* FROM Emp INNER JOIN dbo.Users d ON d.pid= Emp.ID
) SELECT * FROM Emp