我有一个包含以下内容的表:
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();