首頁 > 資料庫 > mysql教程 > 如何解析MySQL 5.7`halle_full_group_by`錯誤?

如何解析MySQL 5.7`halle_full_group_by`錯誤?

Linda Hamilton
發布: 2025-01-25 02:51:09
原創
611 人瀏覽過

How to Resolve the MySQL 5.7 `only_full_group_by` Error?

MySQL 5.7 中的 only_full_group_by 錯誤

MySQL 5.7 版本引入了 only_full_group_by 模式,此模式要求 SELECT 語句中所有未進行聚合的列都必須包含在 GROUP BY 語句中。當查詢的 SELECT 語句中包含未出現在 GROUP BY 語句中的未聚合列時,就會發生此錯誤。

解決此問題的方法有兩種:

方法一:將缺失的列添加到 GROUP BY

將缺失的列 mod_users_groups.group_id 添加到 GROUP BY 語句中:

<code class="language-sql">SELECT 
  g.group_id AS 'value', 
  g.group_name AS 'text' 
FROM mod_users_groups g
LEFT JOIN mod_users_data d ON g.group_id = d.group_id 
WHERE g.active = 1 
  AND g.department_id = 1 
  AND g.manage_work_orders = 1 
  AND g.group_name != 'root' 
  AND g.group_name != 'superuser' 
GROUP BY 
  g.group_name, 
  g.group_id 
HAVING COUNT(d.user_id) > 0 
ORDER BY g.group_name</code>
登入後複製

這確保了 SELECT 語句中所有未進行聚合的列都包含在 GROUP BY 語句中,從而消除了錯誤。

方法二:使用聚合函數

或者,如果缺失的列與分組無關,可以使用聚合函數對數據進行匯總後再選擇它。例如,如果 group_name 確實是唯一的,可以使用以下聚合函數替換 mod_users_groups.group_id

<code class="language-sql">MIN(mod_users_groups.group_id)</code>
登入後複製

這將返回每個唯一 group_name 的最小 group_id,確保 SELECT 語句只包含聚合列。

以上是如何解析MySQL 5.7`halle_full_group_by`錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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