【问题标题】:Column is invalid in the select list when selecting count of children rows选择子行数时,选择列表中的列无效
【发布时间】:2013-05-07 00:57:50
【问题描述】:

我有一个父表 A(id,fld1,fld2) 和子表 B(id,parentId,fld1, fld2)

我想选择 A.* 和子行数

我的查询是:

SELECT A.*, COUNT(B.parentId)
INNER JOIN A ON B.parentId = A.id
GROUP BY B.parentId

但我得到了:

选择列表中的“A.id”列无效 因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句。

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    这是另一种方式:

    SELECT A.*, B.cnt
    FROM A
    CROSS APPLY (SELECT COUNT(*) As cnt
                 FROM B
                 WHERE B.parentId = A.id
                ) As B
    

    【讨论】:

      【解决方案2】:

      旧式(相关子查询):

      SELECT A.*, (SELECT COUNT(*) As cnt
                   FROM B
                   B.parentId = A.id
                  ) As cnt
      FROM A
      

      【讨论】:

        猜你喜欢
        • 2015-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-23
        • 2022-10-04
        • 1970-01-01
        • 1970-01-01
        • 2018-02-17
        相关资源
        最近更新 更多