我刚注意到,如果我select * from the tableName group by columnName;
,那么它不会导致错误。此外,即使我选择了非分组列。
我的理解是我们只能选择分组列和聚合列。
为什么允许这样做?幕后有什么特别之处吗?
这是SQL小提琴 http://sqlfiddle.com/#!9/d3a23/5
答案 0 :(得分:1)
MySQL并未强制执行此特定语法,但您需要了解当您在查询中保留不属于GROUP BY
的列时所具有的效果。
答案 1 :(得分:1)
这是因为MySQL
提供的扩展。每MySQL documentation
MySQL扩展了GROUP BY的标准SQL使用,以便选择列表 可以引用GROUP BY子句中未命名的非聚合列。