首頁 > 資料庫 > mysql教程 > 如何解決MySQL的「不在GROUP BY」錯誤?

如何解決MySQL的「不在GROUP BY」錯誤?

Mary-Kate Olsen
發布: 2024-12-20 04:56:18
原創
425 人瀏覽過

How to Resolve MySQL's

MySQL「不在GROUP BY 中」錯誤

當您在SELECT 子句中包含非聚合列時,會出現此錯誤使用不符合group by 要求的GROUP BY 子句的查詢。在本例中,查詢:

SELECT `name`, `type`, `language`, `code` 
FROM `users` 
WHERE `verified` = '1' 
GROUP BY `name` 
ORDER BY `count` DESC LIMIT 0, 25
登入後複製

會觸發錯誤,因為 GROUP BY 中不包含類型、語言和程式碼。要解決此問題,您需要將所有非聚合列按要求合併到群組中:

SELECT `name`, `type`, `language`, `code` 
FROM `users` 
WHERE `verified` = '1' 
GROUP BY `name`, `type`, `language`, `code` 
ORDER BY `count` DESC LIMIT 0, 25
登入後複製

SQL Group By 要求

SQL92 規定引用的每個列SELECT 子句中的聚合函數之外的內容必須包含在GROUP BY 子句中。然而,SQL99 放寬了這個要求,規定這些欄位在功能上必須依賴 group by 子句。

MySQL Group By 行為

MySQL 允許部分 group by預設值,這可能會導致不確定的結果。例如,考慮以下查詢:

create table t (x int, y int);
insert into t (x,y) values (1,1),(1,2),(1,3);
select x,y from t group by x;
登入後複製

此查詢可能會為每個x 組傳回隨機y 值,如以下輸出所示:

+------+------+
| x    | y    |
+------+------+
|    1 |    1 |
+------+------+
登入後複製

防止Partial Group By

為了防止這種不確定的行為,您可以將@@sql_mode設定為'ONLY_FULL_GROUP_BY':

set @@sql_mode='ONLY_FULL_GROUP_BY';
select x,y from t group by x; 
ERROR 1055 (42000): 'test.t.y' isn't in GROUP BY
登入後複製

以上是如何解決MySQL的「不在GROUP BY」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板