帮助递归sql查询

时间:2010-07-01 13:31:38

标签: sql sql-server-2005 tsql

使用Sql-Server 2005。

我有3个列的Users表。 userID,parentUserID和userEmail。顶级用户在parentUserID中为null,子用户具有一些userID。 我想编写一个查询,将儿童计入某个用户ID的最低级别。

选择包含所有孩子,孩子等的用户......等等。我只需要计算顶级用户以下的用户数。我不需要详细信息或用户ID。

感谢

1 个答案:

答案 0 :(得分:3)

DECLARE @TargetUserId int
SET @TargetUserId = 1;

WITH  Children AS

(
SELECT users.userID, users.parentUserID 
FROM users 
WHERE parentUserID =  @TargetUserId 
UNION ALL
SELECT users.userID, users.parentUserID 
FROM users 
 JOIN Children ON  users.parentUserID = Children.userID
)

SELECT COUNT(*) As SubordinateCount FROM Children