当前位置:   article > 正文

MySQL问题:ERROR 1055 (42000): Expression #2 of SELECT list is not in GROUP BY_sql 错误 [1055] [42000]: expression #2 of select lis

sql 错误 [1055] [42000]: expression #2 of select list is not in group by cla

问题描述

当运行带GROUP BY子句的sql语句时,会出现如下错误:ERROR 1055 (42000): Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'commodity.a.xsjg' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

解决方案

mysql8.0.19版本默认开启了only_full_group_by模式,但开启了这个模式后,如果使用group by会报上述的错误。为了解决上述的错误,把这个模式从变量sql_mode中移除是一种解决方案。

一、在mysql客户端中修改sql_mode变量
查看变量sql_mode

select @@global.sql_mode;
  • 1

查询出来的结果为:

+-----------------------------------------------------------------------------------------------------------------------+
| @@global.sql_mode                                                                                                     |
+-----------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
+-----------------------------------------------------------------------------------------------------------------------+
  • 1
  • 2
  • 3
  • 4
  • 5

去掉ONLY_FULL_GROUP_BY,重新设置sql_mode变量的值

set @@global.sql_mode=
'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
  • 1
  • 2

上述是改变了全局sql_mode,但仅对新建的数据库有效。为了对已存在的数据库有效,则需要使用use 数据库名在对应的数据库下执行:

set sql_mode=
'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
  • 1
  • 2

二、在my.ini(Linux下是my.cnf)配置文件中修改sql_mode项
在配置文件 my.ini 中,添加如下内容,注意,sql_mode项中的值删掉了only_full_group_by,其余值可以在mysql客户端中查询而得:

[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
  • 1
  • 2

在这里插入图片描述

修改完后,需要重启MySQL服务器,重启服务器后,再执行带group by子句的sql语句,如果sql语句没有其他问题,应该能够顺利执行。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/899527
推荐阅读
相关标签
  

闽ICP备14008679号