【问题标题】:use group_by in codeigniter to get latest data在 codeigniter 中使用 group_by 获取最新数据
【发布时间】:2021-04-20 03:40:34
【问题描述】:

我是 CodeIgniter 的新手。我已经看到与我的问题相关的类似线程,但是我找不到确切的解决方案。我有一个表“request”,其中包含两列,一列带有“userId”,另一列带有“requestTime”,如下所示(例如)。

key userId requestTime
6 abc 55555
5 abc 44444
4 xyz 33333
3 abc 22222
2 xyz 11111
1 lmn 00000

在这里,我想获取最新时间(“requestTime”的最大值)的“userId”列表,如下所示。

userId requestTime
abc 55555
xyz 33333
lmn 00000

我在 CodeIgniter 中使用以下代码。

 $this->db->order_by('request.requestTime', 'desc');
 $this->db->group_by('request.userId');
 return $this->db->get('request')->result_array();

上面的 CI 代码没有提供我预期的结果。怎样才能得到预期的结果。

【问题讨论】:

    标签: php codeigniter join group-by


    【解决方案1】:
    $this->db->select_max('request.requestTime','aliasName');
    $this->db->group_by('request.userId');
    return $this->db->get('request')->result_array();
    

    我已经更新了答案..希望它也能帮助其他人。

    【讨论】:

    • 我认为这将根据“requestTime”对整个表进行排序,这将导致输出中的所有六行。但是,我有兴趣看到一组数据对应一个“userId”。
    • 在这种情况下,您需要使用 select_max('request.requestTime','aliasName');而不是 order_by() 然后使用 group_by('request.userId');
    • 我认为它正在工作,我会再做一些测试并更新。
    • 我更新的代码:$this->db->select_max('request.requestTime','aliasTime'); $this->db->group_by('request.userId'); return $this->db->get('request')->result_array();这里 'aliasTime' 给出了最高的时间。这解决了问题
    猜你喜欢
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多