我希望来自列的Distinct值和来自mysql数据库的另一列的order。 mysql表有以下数据
_________________________
|id |publisher_id |view |
|1 |1 |6 |
|2 |4 |4 |
|3 |1 |3 |
|4 |3 |2 |
|5 |4 |3 |
|6 |2 |1 |
|7 |3 |7 |
|8 |5 |9 |
-------------------------
我想要输出如下
_________________________
|id |publisher_id |view |
|8 |5 |9 |
|7 |2 |7 |
|1 |1 |6 |
|2 |4 |4 |
-------------------------
Laravel查询
Feed::query()->select('publisher_id', 'view')->distinct()->orderBy('view', 'DESC')->limit(4)->get();
答案 0 :(得分:0)
基于eckes
的建议$feeds = \App\Models\Feed::select('publisher_id', \Illuminate\Support\Facades\DB::raw('MAX(view) as view'))
->orderBy('view', 'DESC')
->groupBy('publisher_id')
->get();
您无法在此使用DISTINCT
,因为DISTINCT
已应用于整行。
答案 1 :(得分:-1)
您可以在任何列上区分,例如
Feed::query()->select('publisher_id', 'view')->distinct('publisher_id')->orderBy('view', 'DESC')->limit(4)->get();
区别和顺序都不同,它们不会相互影响。
或者您可以使用group by而不是Distinct,例如
Feed::query()->select('publisher_id', 'view')->groupBy('publisher_id')->orderBy('view', 'DESC')->limit(4)->get();