4

インデックスに一致する行の数が特定の数に一致する場合にのみ、MySQLテーブルから行を返したい。

問題は次のとおりです。ユーザー名でインデックス付けされたユーザーレビューのテーブルがあります。したがって、レビューが異なる多くの行があり、すべてユーザー名でインデックスが付けられています。検索フィルターを作成しているので、特定の数のレビュー(つまり、テーブル内のレビュー行の数)を持つユーザーのユーザー名を返す必要があります。

4つのレビュー(4つのテーブル行エントリ)を持つ人々のユーザー名のみをプルするMySQLクエリを作成するにはどうすればよいですか?

4

1 に答える 1

6

これは、4件のレビューがあるものに限定する条項を使用した単純GROUP BYCOUNT()集約的なもののように聞こえます。HAVING

SELECT
  username,
  COUNT(*) AS num_reviews
FROM
  user_reviews
GROUP BY username
/* Limit to those with 4 reviews */
HAVING num_reviews = 4

使用方法については、集計関数GROUP BYリファレンスを確認してください。このHAVING句は、の後に適用され、GROUP BYその結果を制限するために使用されます。

http://sqlfiddle.com/#!2/9dc86/1

于 2012-12-22T20:24:33.747 に答える