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
SQL92 要求SELECT 子句中的所有欄位都是GROUP BY子句的一部分。 SQL99 稍微放寬了此限制,允許在功能上依賴 GROUP BY 子句的欄位。
MySQL 的預設行為允許“部分分組依據”,這意味著可以選擇未包含在 GROUP BY 子句中的列,但這可能會導致不確定的結果。為了防止這種情況,您可以將 @@sql_mode 變數設為「ONLY_FULL_GROUP_BY」。這將迫使 MySQL 遵守完整的分組要求。
以上是MySQL「不在 GROUP BY 中」錯誤:如何修復完整的 Group By 問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!