摘要信息:
对比
MySQL
和标准SQL
语句之间在针对字段别名等情况,group by
的允许范围差异.
select
语句后返回的字段内容, 在only_full_group_by
模式下, 假如这个字段没有纳入group by
聚合的字段中, 将会出现错误.类似的, 假如使用聚合函数, 如max()
(隐含聚合), 同时返回没有其他的字段也会引发类似的问题.
- 关闭这种模式(不建议).
- 在非聚合的要返回的字段, 使用
any_value()
, 返回随意值(唯一值).- 假如非聚合的字段是主键或者是非
null
的唯一索引, 则没有问题(实际上就是聚合的返回的内容是多行数据的叠加, 但是不在聚合下的字段, 就没办法确定要返回的内容是哪些, 所以引发错误, 但是MySQL
则扩展了这个标准, 认为假如假如字段是唯一的, 也可以返回内容).
