在 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 获取最新数据的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Codeigniter 中使用包含函数文件

在summarize()中使用group_by()的语法[关闭]

在 codeigniter 中使用 HTTPOnly 标志设置 cookie

在视图中使用 foreach 的 Codeigniter

使用codeIgniter在MySQL中查找表是不是存在?

在模型中使用查询的 Codeigniter 分页