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.