![](/img/trans.png)
[英]Laravel - query builder to select multiple rows with unique column value (which has max value from another column)
[英]Return all rows with a unique column with Laravel Query Builder
我有一張看起來像下面的表格:
ID | 年齡 | 顏色 |
---|---|---|
1個 | 2個 | 藍色的 |
3個 | 3個 | 紅色的 |
4個 | 5個 | 綠色 |
5個 | 5個 | 紫色的 |
我想獲取所有具有唯一年齡的行,以便返回如下內容:
ID | 年齡 | 顏色 |
---|---|---|
1個 | 2個 | 藍色的 |
3個 | 3個 | 紅色的 |
4個 | 5個 | 綠色 |
$baseQuery = myModel::query()
->select('id', 'age', 'color')
->distinct('age')
->get()
這似乎返回了所有內容,但第二個我的 select 只有age
列,它刪除了重復項。 問題是我需要整行,而不僅僅是年齡。 有任何想法嗎?
編輯:我嘗試的另一件事是:
$baseQuery = myModel::query()
->select('id', 'age', 'color')
->groupBy('age')
->get()
這只是引發了 1055 SQL 錯誤:
Syntax error or access violation: 1055 'table.color' isn't in GROUP BY
非常感謝!
編輯我想通了:在查詢之前添加以下內容,然后按上面的查詢分組。
\DB::statement("SET SQL_MODE=''");
$baseQuery = myModel::query()
->select('id', 'age', 'color')
->groupBy('age')
->get()
您的查詢邏輯存在問題,這就是為什么您無法獲得那樣的不同行的原因。
首先,讓我們談談年齡 = 5 的數據。有 2 行,其中包含年齡 = 5,顏色為綠色和紫色。 這就是問題。 如果您想要將不同的年齡與其他值返回給您,查詢應該返回給您什么? 是綠色數據還是紫色數據?
這沒有意義,不是嗎? 查詢將永遠不知道返回給您什么。 這就是為什么您不創建這樣的查詢的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.