如何获取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的最新行?的主要内容,如果未能解决你的问题,请参考以下文章
如何构建查询以获取每个用户的最新行,其中第三个条件位于单独的表中?