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

Linda Hamilton
发布: 2024-11-21 02:24:12
原创
444 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板