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 函数中,反过来却是非必须的

解决方案

  1. 剔除 select 语句中的多余字段,不触发 only_full_group_by

  2. 使用 any_value() 函数来包装值

  3. 关闭 sql_mode=ONLY_FULL_GROUP_BY。在配置文件 my.cnf 中关闭 sql_mode=ONLY_FULL_GROUP_BY

本作品采用《CC 协议》,转载必须注明作者和本文链接
人生的意义在于承担人生无意义的勇气
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!