シナリオ:
5 行の snippets という名前のテーブルがあり、15 行の Revisions という名前のテーブルがあります
私がやりたかったのはuser_id
、 を含む on リビジョンに属するすべてのスニペットを取得することでしたsnippet_id
。
次のmysqlクエリがあります:
SELECT DISTINCT * FROM "snippets"
INNER JOIN "revisions"
ON "user_id" = "1"
AND "snippet_id" = "snippets.id"
GROUP BY "snippets"."id"
ORDER BY "created_at"
これにより、すべてのスニペットが表示されますrevisions.user_id = 1
。問題は、なぜ私のカウントが違うのですか?そのクエリの合計結果は5ですが、実行すると:
SELECT COUNT(distinct snippets.id) FROM "snippets"
INNER JOIN "revisions"
ON "user_id" = "1"
AND "snippet_id" = "snippets.id"
GROUP BY "snippets"."id";
結果は1 1 1 1 1