如何在 Laravel eloquent 中使用 group by 获取最后一行

Rej*_*aul 1 sql laravel

我想找到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)

它返回前两行。那么,我的雄辩询问应该是什么?

Tsa*_*oga 5

您不能仅使用group byorder by来选择 Mysql 中的最大 id。它总是返回 min id

尝试使用subquerygroup by MAX()像这样:

MyTable::whereIn('id', function($query) {
   $query->from('my_tables')->groupBy('ad_id')->selectRaw('MAX(id)');
})->get();

Run Code Online (Sandbox Code Playgroud)