在laravel 5

时间:2016-06-21 14:30:57

标签: sql laravel-5

我有以下原始查询:

select * 
from (select * from settings order by priority desc) x
group by name

我想使用laravel 5查询构建器,但不能使子查询工作。有没有办法在不使用原始查询的情况下执行此操作?

表格:

id - name - priority
1    1      1
2    1      2
3    2      1

在上面的例子中,它会像我想要的那样返回第2行和第3行

我尝试了这个查询:

$settings = \App\Setting::where('user_id', Auth::id())->orWhere('tool_id', $id)->groupBy('name')->orderBy('priority', 'desc')->get();

但这将返回第1行和第3行。

1 个答案:

答案 0 :(得分:1)

你能使用CTE表达吗? RANK()会起作用: WITH CTE AS ( SELECT *, RANK() OVER(PARTITION BY name ORDER BY priority desc) AS RowRank FROM settings ) SELECT id, name, priority FROM CTE c WHERE c.RowRank = 1