我希望来自列的Distinct值和来自mysql数据库的另一列的order

时间:2017-11-03 05:05:20

标签: php mysql laravel

我希望来自列的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();

2 个答案:

答案 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();