group by 引发的错误
事情起因#
今天在做一个汽车百公里加速排行榜的时候,遇到了一个错误,因为用到了 group by 并且 mysql 版本为 5.7.26, 所以出现了这个错误。
错误码#
MySQL: 1055 Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column
这个错误意思是,查询的字段没有被包含进 GROUP BY 语句中。
错误原因#
MySQL5.7 以前 only_full_group_by
这个 sql_mode
,没有强制默认。
MySQL 5.7 之后,only_full_group_by
成为 sql_mode
的默认选项之一only_full_group_by
这个 sql_mode 的唯一要求,就是
所有的 select 字段必须在 group by 字段中,否则必须出现在 SQL Aggregate 函数中,反过来却是非必须的
解决方案#
剔除 select 语句中的多余字段,不触发
only_full_group_by
。使用
any_value()
函数来包装值关闭 sql_mode=ONLY_FULL_GROUP_BY。在配置文件 my.cnf 中关闭 sql_mode=ONLY_FULL_GROUP_BY
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: