我有一张包含以下信息的表格:
id | user_id | points
--------------------------
1 | 12 | 48
2 | 15 | 36
3 | 18 | 22
4 | 12 | 28
5 | 15 | 59
6 | 12 | 31
etc.
我想要的是每个 user_id 条目最多的前 10 个(数组)(从高到低)。
因此,使用上表,我需要以下数组作为返回:
如何使用事件记录查询方法使用 CodeIgniter 执行此操作?这可以用 COUNT 和 GROUP BY user_id 来完成吗?
最佳答案
我相信你会想要这样的东西:
$this->db->select('user_id, COUNT(user_id) as total');
$this->db->group_by('user_id');
$this->db->order_by('total', 'desc');
$this->db->get('tablename', 10);
这将产生类似的结果
| USER_ID | TOTAL |
| 12 | 3 |
| 15 | 2 |
| 18 | 1 |
更新:正如一些人在评论中指出的那样,原始查询是对 user_ids 求和而不是对它们进行计数。我已更新事件记录查询以更正此问题。
关于codeigniter - COUNT/GROUP BY 与事件记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8988268/