24c*_*ive 24 activerecord group-by codeigniter count
我有一个表格,其中包含以下信息:
id | user_id | points
--------------------------
1 | 12 | 48
2 | 15 | 36
3 | 18 | 22
4 | 12 | 28
5 | 15 | 59
6 | 12 | 31
etc.
Run Code Online (Sandbox Code Playgroud)
我想要的是前10名(数组),每个user_id有大多数条目(从高到低的顺序).所以使用上面的表我需要以下数组作为回报:
如何使用活动记录查询方法使用CodeIgniter执行此操作?可以使用COUNT和GROUP BY user_id来完成吗?
Bre*_*ody 78
我相信你会想要这样的东西:
$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);
Run Code Online (Sandbox Code Playgroud)
这将产生类似的结果
| USER_ID | TOTAL |
| 12 | 3 |
| 15 | 2 |
| 18 | 1 |
Run Code Online (Sandbox Code Playgroud)
更新:正如一些人在评论中指出的那样,原始查询是对user_ids求和而不是计算它们.我已更新活动记录查询以更正此问题.
小智 9
虽然这是一个迟到的答案,但我会说这会对你有所帮助......
$query = $this->db
->select('user_id, count(user_id) AS num_of_time')
->group_by('user_id')
->order_by('num_of_time', 'desc')
->get('tablename', 10);
print_r($query->result());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
167722 次 |
| 最近记录: |