如何获取laravel中每个用户ID的最新行?

Posted

技术标签:

【中文标题】如何获取laravel中每个用户ID的最新行?【英文标题】:How to get the latest rows for each user ID in laravel? 【发布时间】:2020-04-06 18:05:42 【问题描述】:
id  user_id  name    qty     datetime
--- ---------  ----    ----    -----------
1   1           a      5       2019-12-01 12:26:01
2   2           b      3       2019-12-13 12:26:02
3   1           c      4       2019-12-13 12:26:03
4   2           a      2       2019-12-25 12:26:04
5   1           c      2       2019-12-21 12:26:06

我想要这个数据

id  user_id  name    qty     datetime
--- ---------  ----    ----    -----------
5   1           c      2       2019-12-21 12:26:06
4   2           a      2       2019-12-25 12:26:04

使用 laravel,如果可能的话,它的 sql 查询会是什么

【问题讨论】:

那么每个用户 ID 的最新行数? 是的@vivek_23 没错 【参考方案1】:

型号:

用户: id、姓名、电子邮件等...订单: user_id、数量、姓名、日期时间等。

模型查询:

Orders::orderBy('datetime', 'desc')->get()->unique('user_id');

数据库查询

DB::table('orders')->orderBy('datetime', 'desc')->get()->unique('user_id');

【讨论】:

【参考方案2】:

在纯 SQL 中,您可以使用相关子查询进行过滤:

select t.*
from mytable t
where t.datetime = (
    select max(t1.datetime) from mytable t1 where t1.user_id = t.user_id
)

【讨论】:

【参考方案3】:

或不相关的子查询...

select x.*
from mytable x
join (
    select user_id, max(t1.datetime) datetime from mytable group by user_id
) y
on y.user_id = x.user_id
and y.datetime = x.datetime

【讨论】:

以上是关于如何获取laravel中每个用户ID的最新行?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据 laravel 中的一列获取最新记录?

如何在 laravel 中进行会话?

如何构建查询以获取每个用户的最新行,其中第三个条件位于单独的表中?

Laravel 获取最新插入用户的 id

如何使用 laravel 在引导模式中为每个 id 获取动态数据?

如何在 Laravel 8 中使用 PostgreSQL 中的子查询通过 group by 子句获取行值?