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