首頁 >資料庫 >mysql教程 >如何解決 MySQL 錯誤:SELECT 清單與 SQL_MODE=ONLY_FULL_GROUP_BY 不相容?

如何解決 MySQL 錯誤:SELECT 清單與 SQL_MODE=ONLY_FULL_GROUP_BY 不相容?

Linda Hamilton
Linda Hamilton原創
2024-12-30 21:54:11362瀏覽

How to Resolve MySQL Error: SELECT List Incompatible with SQL_MODE=ONLY_FULL_GROUP_BY?

MySQL 錯誤:SELECT 清單與SQL_MODE=ONLY_FULL_GROUP_BY 不相容

執行包含SELECT 語句 不相容

執行包含SELECT 陳述式句時,MySQL 可能會回傳錯誤,表示該表達式不在GROUP BY子句中。當 SQL_MODE 設定為 ONLY_FULL_GROUP_BY 時,可能會發生這種情況,這要求 SELECT 清單中的所有非聚合資料列都包含在 GROUP BY 子句中。

解決方案1:停用SQL_MODE=ONLY_FULL_GROUP_BY

SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

一個解決方案是停用透過發出下列指令來設定SQL_MODE=ONLY_FULL_ROROUP_BY:這將允許查詢執行而不會出現錯誤。

解決方案 2:在 GROUP 中包含所有非聚合列BY 子句

另一個解決方案是包含所有GROUP BY 子句中的非聚合列。這可以透過修改查詢以包含以下內容來完成:

SELECT *
FROM `tbl_customer_pod_uploads`
WHERE `load_id` = '78' AND
      `status` = 'Active'
GROUP BY `proof_type`, `id`

這將確保所有非聚合列都包含在 GROUP BY 子句中,並且查詢執行時不會出現錯誤。

解決方案3:使用聚合器函數

為了獲得最佳實踐,請考慮使用用於非聚合列的聚合器函數,而不是選擇所有列。例如,如果您只需要每種證明類型的記錄數,則可以如下修改查詢:

SELECT `proof_type`, COUNT(*) AS `total_records`
FROM `tbl_customer_pod_uploads`
WHERE `load_id` = '78' AND
      `status` = 'Active'
GROUP BY `proof_type`

以上是如何解決 MySQL 錯誤:SELECT 清單與 SQL_MODE=ONLY_FULL_GROUP_BY 不相容?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn