Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > MySQL this is incompatible with sql_mode=only_full_group_by

如何解决MySQL this is incompatible with sql_mode=only_full_group_by问题

作者:乔丹搞IT

MySQL的ONLY_FULL_GROUP_BY模式要求在使用GROUP BY时,SELECT语句中引用的所有列必须在GROUP BY子句中明确指定,或者是聚合函数的一部分,本文提供了修改SQL语句、使用聚合函数、禁用ONLY_FULL_GROUP_BY等解决方法,并强调了在禁用该模式时应评估其影响

MySQL this is incompatible with sql_mode=only_full_group_by

代码示例:

在MySQL中,ONLY_FULL_GROUP_BY 是一个SQL模式设置,它要求在使用GROUP BY时,SELECT语句中引用的所有列必须在GROUP BY子句中明确指定,或者是聚合函数的一部分。

这个模式的目的是为了防止产生不确定的查询结果。

如果你遇到了ONLY_FULL_GROUP_BY的错误,以下是一些解决方案:

1.修改SQL语句

SELECT column1, column2 FROM table GROUP BY column1;

2.使用聚合函数

3.禁用ONLY_FULL_GROUP_BY

SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
[mysqld]
sql_mode = NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

4.使用ANY_VALUE()函数

5.永久修改sql_mode

如果你正在使用MySQL 8.0或更高版本,并且尝试修改sql_mode时遇到了问题,比如出现了错误:

ERROR 1231 (42000): Variable 'sql_mode' can't be set to the value of 'NO_AUTO_CREATE_USER'

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文