為什麼我在 MySQL 5.7.5 中收到「沒有 GROUP BY 的聚合查詢」錯誤?

Patricia Arquette
發布: 2024-10-25 21:37:29
原創
641 人瀏覽過

Why Am I Getting the

SQL 錯誤:「聚合查詢沒有GROUP BY」

MySQL 5.7.14 引入了一項更改,可能會導致您現有的查詢失敗並出現錯誤「SQLSTATE[42000]:語法錯誤或存取衝突:1140 在沒有GROUP BY 的聚合查詢中。」當您在SELECT 子句中聚合列(例如COUNT())但在GROUP BY 子句中不包含非聚合列時,會出現此錯誤。

為什麼會出現錯誤

;

在早期版本的 MySQL 中,允許不使用 GROUP BY 來聚合列。但是,為了確保資料完整性,MySQL 5.7.5 及更高版本強制執行「strict」或「only_full_group_by」SQL 模式,這要求所有非聚合資料列都包含在 GROUP BY 子句中。

解決方案選項

您有兩個選項來解決此問題:

1。更改 MySQL 設定

您可以修改 MySQL 的配置,使其預設為允許 GROUP BY 子句之外的非聚合列的舊行為。不建議這樣做,因為它違背了行業最佳實踐,並可能導致錯誤的結果。

2.修正查詢

修改查詢以在 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 中仍然允許從GROUP BY 子句中排除非聚合列以及更高版本(如果非聚合列僅限於單一值)。例如,WHERE 子句中的篩選器會將資料列限制為單行,從而可以安全地將其從 GROUP BY 子句中排除。

以上是為什麼我在 MySQL 5.7.5 中收到「沒有 GROUP BY 的聚合查詢」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!