mysql执行select group_by语句sql_mode现象
mysql执行select group_by语句sql_mode=only_full_group_by报错现象
环境
安装完特定版本mysql的任何环境 本次使用test mysql版本mysql5.7
参考
https://blog.csdn.net/qq118640594X/article/details/128024350
配置文件位置
ubuntu:/etc/mysql/mysql.conf.d/mysqld.cnfcentos: vim /etc/my.cnf
现象
sql_mode=only_full_group_by
解决
修改全局mode参数时只对执行完此条语句后创建的数据库生效 若想对旧的数据库生效则需要 在旧数据下面执行语句 建议 安装完成数据库后便在mysql全局配置文件下进行配置此时即可全局永久生效
方式一
1. 对旧库执行修改mode_sql参数 (此处假设旧库为test)
1 | # 列出全部数据库 |
2.设置全局生效 (建议数据库部署完毕就配置此全局配置)
在[mysqld]模块下新增一行配置 (sql_mode根据实际查询出来的结果填写) 修改完成后重启数据库(systemctl restart mysqld)
1 | # 编辑配置文件设置全局生效 |
验证成功
方式二
使用 any_value() 或 group_concat()
1. any_value():将分到同一组的数据里第一条数据的指定列值作为返回数据。 (any_value()函数就是MySQL提供的用来抑制ONLY_FULL_GROUP_BY值被拒绝的)
1 | # sql 语句 |
2. group_concat():将分到同一组的数据默认用逗号隔开作为返回数据
1 | # sql 语句 |
扩展
1. 现象还原 可用下面的sql语句创库实验
1 | /* |
2. 验证sql语句
1 | SELECT * FROM `city`; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ZzNnWn!
评论













