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.cnf
centos
: 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!
评论