codeigniter - COUNT/GROUP BY 与事件记录?

标签 codeigniter activerecord count group-by

我有一张包含以下信息的表格:

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 个(数组)(从高到低)。
因此,使用上表,我需要以下数组作为返回:
  • 12 => 3 行
  • 15 => 2 行
  • 18 => 1 行

  • 如何使用事件记录查询方法使用 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/

    相关文章:

    ruby-on-rails - ruby 中的私有(private)类方法链接

    mysql - 使用选择重复项的语句,通过单个 SQL 命令从表中删除重复项

    mysql - SQL SUM 然后算吗?

    php - Codeigniter:$query->free_result() 使用事件记录时?

    php - 为什么我的脚本可以运行,但是在控制台中显示语法错误?

    mysql - 如何根据查询插入多行?

    mysql - 协会不能双向发挥作用

    php - 为什么这个计数总是返回 1?

    mysql - 如何在 CodeIgniter 中查找具有不同 where 条件的特定行和其他列的计数

    php - 不确定在 codeigniter 中将 where 子句放在哪里