问题:
执行在 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中文网其他相关文章!