在MySQL中,我观察到尽管没有GROUP BY子句,但在SELECT列表中使用AGGREGATE FUNCTION的语句被执行了。如果这样做,其他RDBMS产品(例如SQL Server)将引发错误。
例如,SELECT col1,col2,sum(col3) FROM tbl1;
被执行而没有任何错误,并返回col1,col2的第一行值和col3的所有值之和。以上查询的结果是一行。
谁能告诉我为什么在MySQL中会发生这种情况?
提前致谢!!
这是设计使然-它是MySQL允许的标准的许多扩展之一。
对于像SELECT name, MAX(age) FROM t;
参考文档这样的查询,它说:
如果没有GROUP BY,则只有一个组,并且不确定为该组选择哪个名称值
有关更多信息,请参见分组处理文档。
该设置可ONLY_FULL_GROUP_BY
控制此行为,请参见5.1.7服务器SQL模式。启用此设置将不允许查询缺少group by语句的聚合函数,并且默认情况下从MySQL版本5.7.5开始启用该查询。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句