which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
为了适应明确语义化的MySQL语法,在 sql_mode
里 ONLY_FULL_GROUP_BY
对此做了严格限制:
简单的说来,在此模式下,
target list
中的值要么是来自于聚合函数(sum、avg、max等)的结果,要么是来自于group by list
中的表达式的值
5.7版本以上该模式默认启用。
技术向前发展,我们不建议在配置文件中修改 sql_mode
网上有很多通过修改sql_mode
的方式来解决此问题。但除此方法,MySQL也提供了any_value()
函数来抑制ONLY_FULL_GROUP_BY
值被拒绝,修改如下:
select name, age, avg(point) as avg_point from people group by age;
修改为下面
select any_value(name) as name, age, avg(point) as avg_point from people group by age;