0

グループプロジェクトのリーダーボードを実装しています。

これは、テーブル内のユーザー ID 2 のステータス数をカウントするためのクエリです。

$query = "SELECT COUNT(content) FROM status WHERE userid=2 ";

さて、ステータスの数が最も多いユーザーIDを照会するにはどうすればよいですか?

例の表

||  content  ||  userid  ||
||     x     ||     1    ||
||    xx     ||     1    ||
||     y     ||     2    ||
||    yy     ||     2    ||
||   yyy     ||     2    ||
||     z     ||     3    ||

結果で

1st = 2 with 3 status
2nd = 1 with 2 status
3rd = 3 with 1 status

結果を制限するために何をしますか?トップ 5 だけが必要な場合はどうすればよいですか?

この問題に関連して

この複数のクエリの代わりに、ユーザーテーブルに別の列(number_of_status)を追加することを考えていました...どちらが良いですか?

ありがとう!

4

2 に答える 2

1

でこれを行うことができるはずですGROUP BY

SELECT userid, COUNT(*) AS status_count
  FROM status
  GROUP BY userid
  ORDER BY status_count DESC
  LIMIT 5
于 2013-03-28T19:11:30.140 に答える
0

これは GROUP BY クエリとLIMITで実現できます。

SELECT userid, COUNT(content) as statuses
FROM status
GROUP BY userid
ORDER BY statuses DESC
LIMIT 5
于 2013-03-28T19:12:08.847 に答える