mysql only_full_group_by
错误:综合指南
> 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
解决方案和故障排除
这是解决此问题的方法:
中包括列:
>
最简单的修复程序是将有问题的列(在本示例中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中文网其他相关文章!