mysql 提示SELECT list is not in GROUP BY clause and contains nonaggregated column whic
作者:mmseoamin日期:2024-01-19

原因

SELECT 列表的表达式结果不在 GROUP BY 子句中,或者  GROUP BY 子句中值和结果不匹配

如下图列表是四个值但是group by只有一个值这种情况:

mysql 提示SELECT list is not in GROUP BY clause and contains nonaggregated column whic,第1张

解决方法:

临时方案

查询sql_mode:

sql客户端执行下面语句:

select @@session.sql_mode;

查出的值,删除ONLY_FULL_GROUP_BY,或者直接使用下面sql重新设置sql_mode

set @@global.sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'

 

但是此方法mysql重启后可能会恢复

永久方法

找到my.cnf,修改配置文件my.cnf

Windows操作系统中的MySQL配置文件是“my.ini”,位置一般在MySql安装的根目录下,也有可能在隐藏文件夹“ProgramData”下面;而Linux操作系统中的MySQL配置文件是“my.cnf”,位置一般在“/etc/my.cnf”或“/etc/mysql/my.cnf”目录下

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

 

 重启mysql即可。
service mysqld restart