我有4个单独的选择查询,每个查询都会生成一个具有相同列的表,如id和created_at . 我想联合,然后按created_at命令并获取每个id的最新created_at . 所以我还需要使用group by .
文档中的示例结果为 (select ..) union (select ...)
,但我无法弄清楚如何做类似的事情
DB::select(DB::raw(id, MAX(created_at))
->from($query1->union($query2)->union($query3)->union($query4)))
->groupBy('id')
->orderBy('created_at');
或类似的东西 .
2 回答
您可以执行以下操作:
$ result = $ query1-> merge($ query2) - > merge($ query3) - > merge($ query4);
$ filtered = $ collection-> groupBy('id') - > sortBy('created_at');
这应该适合你:)
如果您遇到任何问题,请告诉我:)