MySQL 分組查詢中 GROUP BY 要求:何時需要禁用 ONLY_FULL_GROUP_BY 模式?

MySQL 分組查詢中 GROUP BY 要求:何時需要禁用 ONLY_FULL_GROUP_BY 模式?

mysql 分組查詢中的 group by 要求

mysql 中執行分組查詢時,通常需要在 group by 子句中指定 select 語句中涉及的所有非聚合列。然而,某些情況下,您可能會發現這一要求并不嚴格。

默認情況下,從 mysql 5.7 開始,only_full_group_by 模式已啟用。在這種模式下,所有非聚合列都必須出現在 group by 子句中。這有助于確保結果的正確性和一致性。

但是,您可以選擇禁用 only_full_group_by 模式。為此,請將 only_full_group_by 選項從 sql_mode 設置中刪除。禁用后,mysql 將不再強制執行 group by 中的完整字段列表。

例1:使用 only_full_group_by 模式

select * from table_name group by column1; -- 會拋出錯誤,因為 column2 未包含在 group by 子句中

例2:禁用 only_full_group_by 模式

SET SQL_MODE = 'ALLOW_PARTIAL_GROUP_BY';  SELECT * FROM table_name GROUP BY column1, column3; -- 不會拋出錯誤,group by 允許部分字段

需要注意的是,禁用 only_full_group_by 模式可能會對查詢結果的準確性產生負面影響。 dlatego disarankan untuk menggunakan modenya hanya jika benar-benar diperlukan.

? 版權聲明
THE END
喜歡就支持一下吧
點贊9 分享