首頁 >資料庫 >mysql教程 >如何修復 MySQL'SELECT 清單的表達式不在 GROUP BY 子句中”錯誤?

如何修復 MySQL'SELECT 清單的表達式不在 GROUP BY 子句中”錯誤?

Linda Hamilton
Linda Hamilton原創
2024-11-21 02:24:12497瀏覽

How to Fix the MySQL

解決「SELECT 清單的表達式不在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