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中文网其他相关文章!