當運行將SELECT COUNT 和SELECT 與GROUP BY 組合在一起的MySQL 查詢時,它是SQL可能會遇到結果數量的差異。這背後的原因通常是臭名昭著的錯誤訊息,「‘field_name’不在 GROUP BY 中」。
要理解該錯誤,讓我們分解問題:
GROUP BY 根據一個或多個指定列的值將行分組在一起。在我們的範例中,使用 GROUP BY 的查詢具有類似 GROUP BY name 的子句。這意味著只有具有唯一名稱值的行才會被分組。
SQL92 最初要求 SELECT 子句中的所有欄位也位於 GROUP BY 子句中。然而,SQL99 放鬆了這一限制,允許在功能上依賴 GROUP BY 列的欄位包含在 SELECT 子句中。
MySQL 預設允許“部分分組依據”,這表示它允許GROUP BY 子句中未明確顯示的 SELECT 子句。但是,這可能會導致不確定的結果。
要解決此問題,請確保 SELECT 子句中的所有欄位都是 GROUP BY 子句的一部分,或在功能上依賴它。在我們的範例中,需要將類型、語言和程式碼新增至GROUP BY 子句中:
MySQL 也提供了一個設置, @ @sql_mode,可以設置為強制執行完整分組依據:
使用此設置,任何沒有完整分組依據的查詢將導致錯誤。
以上是為什麼 MySQL 會拋出「不在 GROUP BY 中」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!