测试环境
win10
MySQL 5.7
问题描述:
执行类似mysql查询,
mysql> select goods_id,goods_name from group by cat_id;
报错,如下:
服务器内部错误 (1055, “Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘case_table.id’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by”)
原因:存在非聚合列 id ,没有包含在GROUP BY子句中。
但是本例中,其它地方需要用到这个id列,不能去掉,那咋办呢?如下
解决方法
方法1
查询全局sql_mode
mysql> select @@GLOBAL.sql_mode;
或者
mysql> select @@sql_mode;
查询结果如下:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
复制查询结果,然后设置GLOBAL sql_mode,SESSION sql_model为查询结果去掉 “ONLY_FULL_GROUP_BY,”的值,如下: