【问题标题】:help with recursive tsql query递归sql查询帮助
【发布时间】:2010-07-01 13:31:38
【问题描述】:

使用 Sql-Server 2005。

我有 3 列的用户表。用户 ID、父用户 ID 和用户电子邮件。顶级用户的 parentUserID 为 null,子用户有一些 userID。 我想编写一个查询,将孩子计数到某个用户 ID 的最低级别。

选择用户和他所有的孩子,他们的孩子......等等。我只需要计算那些低于顶级用户的用户。我不需要详细信息或他们的用户 ID。

谢谢

【问题讨论】:

    标签: sql sql-server-2005 tsql


    【解决方案1】:
    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,这样目标用户就不会被算作它的孩子之一。
    • @Philip - 不。顶层是parentUserID = @TargetUserId 而不是UserID = @TargetUserId ,因此永远不会引入目标用户。
    • @eugeneK 我现在编辑的 CTE 之前缺少一个分号。
    猜你喜欢
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    • 2019-06-26
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    相关资源
    最近更新 更多