我想找到groupByLaravel 中的最后几行。我有如下表:
id name ad_id
1 a 1
2 b 2
3 a 2
4 c 1
Run Code Online (Sandbox Code Playgroud)
ad_id我希望结果按如下方式分组:
id name ad_id
3 a 2
4 c 1
Run Code Online (Sandbox Code Playgroud)
我当前的查询:
MyTable::groupBy('ad_id')->orderBy('id', 'desc')->get();
Run Code Online (Sandbox Code Playgroud)
它返回前两行。那么,我的雄辩询问应该是什么?
您不能仅使用group by和order by来选择 Mysql 中的最大 id。它总是返回 min id。
尝试使用subquery并group by MAX()像这样:
MyTable::whereIn('id', function($query) {
$query->from('my_tables')->groupBy('ad_id')->selectRaw('MAX(id)');
})->get();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2851 次 |
| 最近记录: |