加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL 5.7使用group by语句报1055错误处理方法剖析

发布时间:2023-09-04 14:23:34 所属栏目:MySql教程 来源:
导读:本文主要给大家介绍MySQL 5.7使用group by语句报1055错误处理方法解析,希望可以给大家补充和更新些知识。

1. 在5.7版本以上mysql中使用group by语
本文主要给大家介绍MySQL 5.7使用group by语句报1055错误处理方法解析,希望可以给大家补充和更新些知识。                                                            
 
1. 在5.7版本以上mysql中使用group by语句进行分组时, 如果select的字段 , 不是完全对应的group by后面的字段 , 有其他字段 , 那么就会报这个错误
 
ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column
 
2.这是因为高版本mysql添加了一个sql_mode
 
查看sql_mode
 
select @@sql_mode;
 
mysql> select @@sql_mode;
 
+-------------------------------------------------------------------------------------------------------------------------------------------+
 
| @@sql_mode                                                                                                                                |
 
+-------------------------------------------------------------------------------------------------------------------------------------------+
 
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_pISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
 
+-------------------------------------------------------------------------------------------------------------------------------------------+
 
可以看到有一个ONLY_FULL_GROUP_BY , 这个就是严格控制group by 和select 字段的 , 在不改变sql语句的前提下 , 把这个去掉就可以了
 
3.我的ubuntu系统下编辑的这个文件 /etc/mysql/conf.d/mysql.cnf  , 其他系统找到对应的配置文件就可以了 ,在[mysqld]块下 ,把sql_mode配置上 , 并且去掉ONLY_FULL_GROUP_BY
 
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_pISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
 
4.此时就正常了
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章