与えられた
表 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
ここで、 から Name も出力したいだけです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 BYis 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には、「テーブルに 1 つではなく 3 つのスキャンが生成されるため、スケーリングされません」などのコメントがあります。 "。
結合された( と 1 対 1 の関係がある)からのフィールドをクエリ出力に効率的に含めるにはどうすればよいですか?Table BFkId