给定
表 A
Id INTEGER
Name VARCHAR(50)
表 B
Id INTEGER
FkId INTEGER ; Foreign key to Table A
我希望计算每个FkId
值的出现次数:
SELECT FkId, COUNT(FkId)
FROM B
GROUP BY FkId
现在我只想从Table A
.
这将不起作用:
SELECT FkId, COUNT(FkId), a.Name
FROM B b
INNER JOIN A a ON a.Id=b.FkId
GROUP BY FkId
因为a.Name
不包含在GROUP BY
子句中(产生is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause
错误)。
关键是要从这样的输出中移动
FkId Count
1 42
2 25
像这样输出
FkId Count Name
1 42 Ronald
2 22 John
对于该错误消息,SO 上有很多匹配项,但有些例如https://stackoverflow.com/a/6456944/141172有诸如“将在表上生成 3 次扫描,而不是 1 次,因此不会缩放”。
如何在查询输出中有效地包含来自连接的字段Table B
(与 1:1 的关系)?FkId