MySQL严格模式的ONLY_FULL_GROUP_BY解决办法

which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

为了适应明确语义化的MySQL语法,在 sql_modeONLY_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;
Author: thinkwei

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注