mysql 的group by 滿足的規則要求:


版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/u011066470/article/details/97291377
————————————————

GROUP BY滿足的規則:

所有select 字段,除了聚合函數中的字段,都必須出現在GROUP BY 中。

例如:SELECT  name,age,max(salary) FROM  t_employee  GROUP BY  name,age

salary 字段可以不用出現在 GROUP BY 中

only_full_group_by的作用
ONLY_FULL_GROUP_BY是MySQL提供的一個sql_mode,通過這個sql_mode來提供SQL語句GROUP BY合法性的檢查,在MySQL的sql_mode是非ONLY_FULL_GROUP_BY語義時。一條select語句,MySQL允許target list中輸出的表達式是除聚集函數或group by column以外的表達式,這個表達式的值可能在經過group by操作后變成undefined。

而對於語義限制都比較嚴謹的多家數據庫,如SQLServer、Oracle、PostgreSql都不支持select target list中出現語義不明確的列,這樣的語句在這些數據庫中是會被報錯的,所以從MySQL 5.7版本開始修正了這個語義,就是我們所說的ONLY_FULL_GROUP_BY語義,例如查看MySQL 5.7默認的sql_mode如下:

mysql> select @@global.sql_mode;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM