首页 >数据库 >mysql教程 >如何修复 MySQL'SELECT 列表的表达式不在 GROUP BY 子句中”错误?

如何修复 MySQL'SELECT 列表的表达式不在 GROUP BY 子句中”错误?

Linda Hamilton
Linda Hamilton原创
2024-11-21 02:24:12502浏览

How to Fix the MySQL

解决“SELECT 列表的表达式不在 GROUP BY 子句中”错误

问题:

执行在 GROUP BY 子句中包含非聚合列的查询中,您会遇到以下情况错误:

#1055 - Expression of SELECT list is not in GROUP BY clause and contains nonaggregated column this is incompatible with sql_mode=only_full_group_by

原因:

当 SELECT 列表中有未包含在 GROUP BY 子句中的非聚合列时,会发生此错误。在 MySQL 5.7.12 版本中,默认启用 only_full_group_by SQL 模式,该模式强制执行更严格的分组规则。

解决方案:

要解决此错误,您可以:

1。将非聚合列添加到 GROUP BY 子句中:

这可确保查询仅返回 GROUP BY 子句中所有列具有相同值的行。

SELECT libelle, credit_initial, disponible_v, SUM(montant) AS montant 
FROM fiche, annee, type 
WHERE type.id_type = annee.id_type AND annee.id_annee = fiche.id_annee 
  AND annee = YEAR(CURRENT_TIMESTAMP)
GROUP BY libelle, credit_initial, disponible_v
ORDER BY libelle ASC;

2。禁用 only_full_group_by SQL 模式:

这允许查询返回 GROUP BY 子句中所有列可能不具有相同值的行。

sudo vim /etc/mysql/conf.d/mysql.cnf

滚动到文件底部并添加以下行:

[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

保存并退出 vim。重新启动 MySQL:

sudo service mysql restart

重新启动 MySQL 后,查询应该成功执行,不会出现错误。

以上是如何修复 MySQL'SELECT 列表的表达式不在 GROUP BY 子句中”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn