mysql 分組查詢中的 group by 要求
在 mysql 中執(zhí)行分組查詢時(shí),通常需要在 group by 子句中指定 select 語句中涉及的所有非聚合列。然而,某些情況下,您可能會(huì)發(fā)現(xiàn)這一要求并不嚴(yán)格。
默認(rèn)情況下,從 mysql 5.7 開始,only_full_group_by 模式已啟用。在這種模式下,所有非聚合列都必須出現(xiàn)在 group by 子句中。這有助于確保結(jié)果的正確性和一致性。
但是,您可以選擇禁用 only_full_group_by 模式。為此,請(qǐng)將 only_full_group_by 選項(xiàng)從 sql_mode 設(shè)置中刪除。禁用后,mysql 將不再強(qiáng)制執(zhí)行 group by 中的完整字段列表。
例1:使用 only_full_group_by 模式
select * from table_name group by column1; -- 會(huì)拋出錯(cuò)誤,因?yàn)?column2 未包含在 group by 子句中
登錄后復(fù)制
例2:禁用 only_full_group_by 模式
SET SQL_MODE = 'ALLOW_PARTIAL_GROUP_BY'; SELECT * FROM table_name GROUP BY column1, column3; -- 不會(huì)拋出錯(cuò)誤,group by 允許部分字段
登錄后復(fù)制
需要注意的是,禁用 only_full_group_by 模式可能會(huì)對(duì)查詢結(jié)果的準(zhǔn)確性產(chǎn)生負(fù)面影響。 dlatego disarankan untuk menggunakan modenya hanya jika benar-benar diperlukan.