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

原因

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

你可能感兴趣的:(#,Liun小技巧,mysql,数据库)