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

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

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-25 06:14:15206浏览

How to Fix the

对“SELECT 列表的表达式不在 GROUP BY 子句中”错误进行故障排除

错误“SELECT 列表的表达式不在 GROUP BY 子句中并且包含非聚合列 ' libelle'," 在使用 SELECT 列表和 GROUP 中的非聚合列执行查询时通常会遇到BY 条款。要解决此错误,需要确保所有非聚合列都包含在 GROUP BY 子句中,或者使用 SUM()、AVG() 或 COUNT() 等函数进行聚合。

中在这种特定情况下,查询尝试选择包括“libelle”、“credit_initial”、“disponible_v”和“montant”在内的列。但是,GROUP BY 子句中仅包含“libelle”,而“montant”则不是聚合的。要解决此问题,请修改查询以在 GROUP BY 子句中包含“montant”,或使用 SUM() 或其他适当的函数对其进行聚合。

解决方案

这是查询的更新版本,其中 GROUP BY 中包含“montant”子句:

SELECT libelle, credit_initial, disponible_v, SUM(montant) AS total_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

或者,可以使用 SUM() 调整查询以聚合 'montant':

SELECT libelle, credit_initial, disponible_v, SUM(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 
ORDER BY libelle ASC

通过进行这些更改,查询将符合 MySQL 5.7' s 严格的 GROUP BY 模式并避免错误。

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

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