当前位置: 首页 > 面试题库 >

Laravel雄辩地选择所有具有max created_at最大值的行

邵昆琦
2023-03-14
问题内容

我有一个包含以下内容的表:

id  seller_id   amount   created_at
1   10          100      2017-06-01 00:00:00
2   15          250      2017-06-01 00:00:00
....
154 10          10000    2017-12-24 00:00:00
255 15          25000    2017-12-24 00:00:00

我想获取每个单个Seller_id的所有最新行。我可以得到这样的最新行:

$sales = Snapshot::where('seller_id', '=', 15)
    ->orderBy('created_at', 'DESC')
    ->first();

如何仅获得每个卖方的最新行?


问题答案:

要获取每个Seller_id的最新记录,您可以使用以下查询

select s.*
from snapshot s
left join snapshot s1 on s.seller_id = s1.seller_id
and s.created_at < s1.created_at
where s1.seller_id is null

使用查询生成器,您可以将其重写为

DB::table('snapshot as s')
  ->select('s.*')
  ->leftJoin('snapshot as s1', function ($join) {
        $join->on('s.seller_id', '=', 's1.seller_id')
             ->whereRaw(DB::raw('s.created_at < s1.created_at'));
   })
  ->whereNull('s1.seller_id')
  ->get();


 类似资料:
  • 我试着补充: 并用调用,但响应为空。

  • 我被一个简单的任务困住了。我只需要这通电话的结果 其中,是一个模型。我试过这个 但它不起作用。从表中获取所有数据并对其进行排序的更好方法是什么?

  • 问题内容: 我有一张表: 我需要选择具有最大更新值的id和val。因此,对于此表,结果应为: 问题答案: 这需要在与主表连接的子查询中进行汇总。

  • 在oracle DB中检索具有大组最大值的行时遇到问题。 我的桌子看起来是这样的: id,col1,col2,col3,col4,col5,date_col 谢谢你的提示! 干杯

  • 我有三张桌子: 每当我尝试添加时,我试图获得一个帖子,它会自动添加一个,其中包含,表以及,同时,一旦创建了,它还应该记录和,但我使用多对多关系和结束了这个错误。如何使用eloquent添加和? 这就是我迄今为止所尝试的。 控制器。php 使用者php UserACcount.php Verification.php 账户php 我尝试使用这个功能,完全可以正常工作,但我很确定这就是它如何与雄辩。

  • 问题内容: 我已经看到了很多解决此类问题的解决方案尤其是此SQL仅选择在Column上具有Max Value的行,但是似乎没有一个合适的解决方案: 我有以下表格布局,即附件的版本控制,这些附件绑定到实体: 输出应该是最大版本号,按group_id和Entity_id分组,如果有帮助,我只需要一个单个entity_id的列表即可: 我想出的是这种自我加入: 但是,只有在不同的实体不共享相同的组号的情