【问题标题】:How to find count of Child using parentId如何使用 parentId 查找 Child 的数量
【发布时间】:2019-02-04 07:51:58
【问题描述】:

如何求每行的孩子数?

例如:

   1 ROW COUNT=1
   2 ROW COUNT=0 
   ...

等等。在下一栏

【问题讨论】:

  • 一个 rCTE(递归公用表表达式)似乎是最好的方法。到目前为止,您是否尝试过自己解决此问题?如果没有,这里有大量资源介绍如何使用 rCTE 在 SQL Server 中导航分层数据。
  • 由于这似乎是一张孩子的表,所以在查询这张表时不可能有一个有0个孩子的父母。

标签: sql-server tsql hierarchy


【解决方案1】:

您可以使用递归 CTE 来完成此操作,但应该使用简单连接来完成。首先,找出每个节点的计数,不包括没有父节点的节点:

SELECT [ParentID] 
      ,COUNT(*)
FROM MyTable 
WHERE [ParentID] <> 0
GROUP BY [ParentID];

如果没问题,就加入初始表:

SELECT *
FROM MyTable T1
LEFT JOIN
(
    SELECT [ParentID] 
          ,COUNT(*) AS [all_childs]
    FROM MyTable 
    WHERE [ParentID] <> 0
    GROUP BY [ParentID]
) T2
    oN T1.[parentID] = T2.[ParentID];

【讨论】:

    【解决方案2】:

    应该没问题,ROW COUNT=0时需要isnull()函数

     SELECT 
            PA.ID, 
            PA.Title_Name, 
            ISNULL(P.COUNTT,0) CountOfID 
     FROM #My_Table PA
     LEFT JOIN (
                 SELECT COUNT(*) COUNTT, Parent_ID from #My_Table GROUP BY Parent_ID
                 ) as P on P.Parent_ID = PA.ID
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-28
      • 2021-10-10
      • 1970-01-01
      • 1970-01-01
      • 2012-05-16
      相关资源
      最近更新 更多