2
使用Sql-Server 2005.帮助递归tsql查询
我有3列用户表。用户ID,parentUserID和userEmail。顶级用户在parentUserID中有空,子用户有一些用户ID。 我想写一个查询,计数到某些用户ID的最低级别的儿童。
选择用户与他的所有子女,他们的孩子....等等。我只需要那些低于顶级用户的用户数量。我不需要详细信息或他们的用户ID。
感谢
使用Sql-Server 2005.帮助递归tsql查询
我有3列用户表。用户ID,parentUserID和userEmail。顶级用户在parentUserID中有空,子用户有一些用户ID。 我想写一个查询,计数到某些用户ID的最低级别的儿童。
选择用户与他的所有子女,他们的孩子....等等。我只需要那些低于顶级用户的用户数量。我不需要详细信息或他们的用户ID。
感谢
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
你需要一个-1那里的某个地方,从而使目标用户不能算作它的一个子。 – 2010-07-01 13:40:31
@Philip - 编号顶级是'parentUserID = @TargetUserId'而不是'UserID = @TargetUserId'所以目标用户永远不会被带入。 – 2010-07-01 13:41:42
@eugeneK我现在编辑的CTE之前缺少一个分号。 – 2010-07-01 13:48:37