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

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

Linda Hamilton
發布: 2024-12-30 21:54:11
原創
356 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板