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