如果你选择了COUNT()列,GROUP BY 子句应存在相同名称的列。否则,将发生一下错误:
如果 ONLY_FULL_GROUP_BY 启用SQL模式,会发生一个错误:
mysql> SET sql_mode = 'ONLY_FULL_GROUP_BY';
Query OK, 0 rows affected, 1 warning (0.22 sec)
mysql> SELECT owner, COUNT(*) FROM pet;
ERROR 1140 (42000): In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column 'menagerie.pet.owner'; this is incompatible with sql_mode=only_full_group_by
如果 ONLY_FULL_GROUP_BY 没有启用,查询会作为一个单独的组出来,
但为每个指定的列选定的值是不确定的。MYSQL服务可以自由选择任何行中的值:
mysql> SET sql_mode = '';
Query OK, 0 rows affected (0.00 sec)
本文介绍了 MySQL 中 ONLY_FULL_GROUP_BY SQL 模式的使用方法及注意事项。当启用此模式时,聚合查询中未被 GROUP BY 子句包含的列不能出现在 SELECT 列表中。若违反该规则,将会引发错误。文章还解释了当 ONLY_FULL_GROUP_BY 未启用时,虽然查询可以执行,但是结果可能会因服务选择不同行而变得不确定。
5002

被折叠的 条评论
为什么被折叠?



