0

我有一个父表 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 子句中。

4

2 回答 2

2

这是另一种方式:

SELECT A.*, B.cnt
FROM A
CROSS APPLY (SELECT COUNT(*) As cnt
             FROM B
             WHERE B.parentId = A.id
            ) As B
于 2013-05-05T14:30:00.750 回答
0

旧式(相关子查询):

SELECT A.*, (SELECT COUNT(*) As cnt
             FROM B
             B.parentId = A.id
            ) As cnt
FROM A
于 2013-05-06T16:57:50.257 回答