首页 >数据库 >mysql教程 >如何解决MySQL'only_full_group_by”错误?

如何解决MySQL'only_full_group_by”错误?

Patricia Arquette
Patricia Arquette原创
2025-01-25 03:11:08867浏览

How to Resolve the MySQL

mysql only_full_group_by错误:综合指南

> MySQL 5.7引入了

> sql模式,导致这样的错误:only_full_group_by>

出现此错误是因为
<code>Expression #1 of SELECT list is not in GROUP BY clause and contains non-aggregated column 'support_desk.mod_users_groups.group_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by</code>
要求

列表中的所有列(不包括汇总列)也必须出现在only_full_group_by>子句中。 以前的MySQL版本没有强制执行此功能,可能会产生模棱两可的结果。 SELECT GROUP BY解决方案和故障排除

这是解决此问题的方法:>

1。在

中包括列:

> 最简单的修复程序是将有问题的列(在本示例中GROUP BY)添加到您的子句中:>

group_id 2。汇总或使用GROUP BY

<code class="language-sql">...
GROUP BY group_name, group_id
...</code>
>

如果您只需要从每个组中的非聚集列中一个值,请使用ANY_VALUE()之类的汇总函数。 另外,从组返回任意值:

COUNT() 3。禁用SUM()(不推荐):ANY_VALUE()

>
<code class="language-sql">SELECT ANY_VALUE(g.group_id) AS value, g.group_name AS text ...</code>
您可以禁用此模式,但是通常会灰心,因为它掩盖了可能有问题的查询:

only_full_group_by 最佳实践

<code class="language-sql">SET sql_mode = 'only_full_group_by=OFF';</code>
>

合格的列名称:始终将列名与表别名(例如,)限定,以避免模棱两可。 修订的查询看起来像这样:>

  • 唯一性:确保g.group_id
  • 在其各自组中是唯一的,以防止重复值的意外结果。
通过遵循以下步骤,您可以有效地解决
<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
...</code>
违规行为,并编写更强大且可预测的MySQL查询。

    以上是如何解决MySQL'only_full_group_by”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

    声明:
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn