首頁 >資料庫 >mysql教程 >MySQL「不在 GROUP BY 中」錯誤:如何修復完整的 Group By 問題?

MySQL「不在 GROUP BY 中」錯誤:如何修復完整的 Group By 問題?

Patricia Arquette
Patricia Arquette原創
2024-12-05 12:21:10698瀏覽

MySQL

MySQL 中的Group By 錯誤:「'isn't in GROUP BY'」

MySQL 中遇到「isn't in GROUP BY」錯誤時,表示SELECT 子句中選擇的欄位與GROUP BY中包含的列之間存在差異

理解錯誤

在給定的範例中,第一個查詢(SELECT count(DISTINCT name)) 按單列(名稱)正確分組,而第二個查詢(SELECT name 、類型、語言、程式碼`)嘗試擷取比GROUP BY`中包含的列更多的列

解決方案

要解決此錯誤,必須確保“完整分組依據”,其中選擇的所有列也必須是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 標準和MySQL 行為

SQL92 要求SELECT 子句中的所有欄位都是GROUP BY子句的一部分。 SQL99 稍微放寬了此限制,允許在功能上依賴 GROUP BY 子句的欄位。

MySQL 的預設行為允許“部分分組依據”,這意味著可以選擇未包含在 GROUP BY 子句中的列,但這可能會導致不確定的結果。為了防止這種情況,您可以將 @@sql_mode 變數設為「ONLY_FULL_GROUP_BY」。這將迫使 MySQL 遵守完整的分組要求。

以上是MySQL「不在 GROUP BY 中」錯誤:如何修復完整的 Group By 問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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