首頁  >  文章  >  資料庫  >  為什麼我的 MySQL 5.7 聚合查詢在沒有 GROUP BY 子句的情況下會失敗?

為什麼我的 MySQL 5.7 聚合查詢在沒有 GROUP BY 子句的情況下會失敗?

DDD
DDD原創
2024-10-26 01:42:28908瀏覽

Why is my MySQL 5.7  query with aggregation failing without a GROUP BY clause?

MySQL 5.7 中聚合查詢需要GROUP BY

問:升級到MySQL 5.7.14 後,執行查詢時遇到錯誤沒有查詢BY 子句。該查詢涉及聚合 (COUNT) 和 SELECT 清單中的非聚合列,以前在較舊的電腦上執行。

答:在 MySQL 版本 5.7.5 及更高版本中,預設行為已更改聚合資料時強制使用 GROUP BY。這意味著,當 SELECT 子句中使用 COUNT 等函數時,所有非聚合資料列必須包含在 GROUP BY 子句中。

要解決該錯誤,您有兩個選項:

  • 修改MySQL 設定:調整MySQL 配置以恢復到先前的行為,即允許在不使用GROUP BY 的聚合查詢中使用非聚合列。
  • 修正查詢: 更新查詢以包含GROUP BY 子句中的所有非聚合列,如下例所示:
<code class="sql">SELECT id, password, COUNT(id) AS count 
FROM users 
WHERE email = :email 
GROUP BY id, password 
LIMIT 1</code>

需要注意的是,MySQL 5.7.5 及更高版本中存在異常當使用WHERE 子句中的篩選器將非聚合列限制為單一值時。在這種情況下,可以從 GROUP BY 子句中排除非聚合列。更多詳情請參考官方文件。

以上是為什麼我的 MySQL 5.7 聚合查詢在沒有 GROUP BY 子句的情況下會失敗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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