主页 M

mysql8新特性GROUP BY,要显示全字段

2025-08-16 网页编程网 网页编程网

1.序

mysql8与mysql5相比有很多改变,如mysql8中GROUP BY,要显示所有字段,而报错。

实际上,可以使用any_value()函数来抑制错误。

2.解决方案

网上有人说需要修改my.ini配制文件,很不推荐,这样会失去mysql8的优势。

推荐使用any_value()函数来抑制错误,最终解决方案,还是推荐mysql8的语法。如:

mysql 5写法:SELECT name, code FROM table GROUP BY name order by id

mysql 8抑制错误写法:SELECT name, any_value(code) AS code FROM table GROUP BY any_order by(id)

3.临时解决方案

为了救急的临时方案,设置不会被保存,当重启数据库时,仍分恢复。以下sql语句可以在mysql数据库中执行,也可以用php代码实现。

3.1查看当前sql mode

select @@GLOBAL.sql_mode;

3.2修改成mysql5的模式

SET GLOBAL sql_mode='STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION';

4.修改my.ini使支持mysql5版本,重启仍有效

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
阅读原文
阅读 338
123 显示电脑版