给定
表 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