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