mysql 报错 this is incompatible with sql_mode=only_full_group_by
程序员文章站
2023-12-28 14:46:58
...
mysql5.7+的版本默认是开启了 only_full_group_by
模式的,开启这个模式后,查询的列必须都是分组的条件。原先的 group by 语句会报这个错误。
查看sql_mode
select @@global.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
可以看到,第一个就是 only_full_group_by
解决方法
1:去掉ONLY_FULL_GROUP_BY
,重新设置值。
set @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
2:any_value()函数的使用
SELECT
any_value (ID) AS ID,
any_value(PIC_TYPE),
PIC_NAME
FROM
`cp_picname_mapping` g
GROUP BY
g.PIC_NAME
介绍一下GROUP_CONCAT()函数。
作用:分组完成后,相同的列放在一起
select GROUP_CONCAT(
s.name SEPARATOR ';'
) as names FROM student s GROUP BY s.class_id
把学生按班级分组,所有名字取出来组成names,每个学生姓名用;
号分割。
select GROUP_CONCAT(
CONCAT(age,':'),
s.name SEPARATOR ';'
) FROM student s GROUP BY s.class_id
跟上面的查询比,多了个CONCAT()
函数,把每个学生的年龄和姓名放一块,用:
分割,多个用;
号分割。
推荐阅读
-
this is incompatible with sql_mode=only_full_group_by
-
MySQL 报错:#1 of ORDER BY clause is not in GROUP BY sql_mode=only_full_group_by
-
mysql 报错 this is incompatible with sql_mode=only_full_group_by
-
Mysql数据库报错:select list is not in group by clause and contains .....sql_mode=only_full_group_by问题
-
解决MySQL 5.7.9版本sql_mode=only_full_group_by问题
-
【mysql问题】完美解决this is incompatible with sql_mode=only_full_group_by
-
出现“this is incompatible with sql_mode=only_full_group_by“问题的解决方案
-
“this is incompatible with sql_mode=only_full_group_by“问题解决
-
MySql5.7版本问题sql_mode=only_full_group_by的完美解决方案
-
Mysql的sql_mode=only_full_group_by问题解决