在 codeigniter 中使用 group_by 获取最新数据
Posted
技术标签:
【中文标题】在 codeigniter 中使用 group_by 获取最新数据【英文标题】:use group_by in codeigniter to get latest data 【发布时间】: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 代码没有提供我预期的结果。怎样才能得到预期的结果。
【问题讨论】:
【参考方案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'); 最好参考这个***.com/a/19944180/9326828 我认为它正在工作,我会再做一些测试并更新。 我更新的代码:$this->db->select_max('request.requestTime','aliasTime'); $this->db->group_by('request.userId'); return $this->db->get('request')->result_array();这里 'aliasTime' 给出了最高的时间。这解决了问题以上是关于在 codeigniter 中使用 group_by 获取最新数据的主要内容,如果未能解决你的问题,请参考以下文章
在summarize()中使用group_by()的语法[关闭]