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 回答