首頁  >  文章  >  資料庫  >  為什麼我的沒有 GROUP BY 的聚合查詢會在 MySQL 5.7.14 中導致錯誤?

為什麼我的沒有 GROUP BY 的聚合查詢會在 MySQL 5.7.14 中導致錯誤?

Barbara Streisand
Barbara Streisand原創
2024-11-01 03:39:02923瀏覽

Why Do My Aggregate Queries Without GROUP BY Cause Errors in MySQL 5.7.14 ?

不使用GROUP BY 的聚合查詢:了解錯誤和解決方案

以前,在舊版的MySQL 上,不使用GROUP BY子句的聚合查詢函數(例如COUNT())通常可以毫無問題地執行。但是,在MySQL 5.7.14 及更高版本中,此類查詢可能會遇到錯誤:

SQLSTATE[42000]: Syntax error or access violation: 1140 In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column [...]

此錯誤源自於MySQL 的預設行為的更改,以與其他RDBMS 系統保持一致,這需要非聚合欄位使用聚合函數時要包含在GROUP BY 子句中的SELECT 子句中。

解決錯誤:

要解決此錯誤,您有兩個選項:

1。調整 MySQL 設定:

您可以透過修改 MySQL 的設定來還原到舊版行為。但是,通常不建議這樣做,因為它會延續非最佳查詢實踐。

2.修正查詢:

首選解決方案是修改查詢以在 GROUP BY 子句中包含非聚合列。例如,上面的查詢可以重寫為:

SELECT id, password, COUNT(id) AS count 
FROM users 
WHERE email = :email 
GROUP BY id, password 
LIMIT 1

Exception in 5.7.5 :

在MySQL 5.7.5 版本及更高版本中,它仍然是當非聚合列被限制為單一值時(例如,在WHERE 子句中使用過濾器),允許從GROUP BY子句中排除非聚合列。可以在此處找到此異常的詳細資訊和範例。

以上是為什麼我的沒有 GROUP BY 的聚合查詢會在 MySQL 5.7.14 中導致錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn