MySQL 分组查询中 GROUP BY 要求:何时需要禁用 ONLY_FULL_GROUP_BY 模式?

mysql 分组查询中 group by 要求:何时需要禁用 only_full_group_by 模式?

mysql 分组查询中的 group by 要求

mysql 中执行分组查询时,通常需要在 group by 子句中指定 select 语句中涉及的所有非聚合列。然而,某些情况下,您可能会发现这一要求并不严格。

默认情况下,从 mysql 5.7 开始,only_full_group_by 模式已启用。在这种模式下,所有非聚合列都必须出现在 group by 子句中。这有助于确保结果的正确性和一致性。

但是,您可以选择禁用 only_full_group_by 模式。为此,请将 only_full_group_by 选项从 sql_mode 设置中删除。禁用后,mysql 将不再强制执行 group by 中的完整字段列表。

例1:使用 only_full_group_by 模式

select * from table_name group by column1;
-- 会抛出错误,因为 column2 未包含在 group by 子句中

例2:禁用 only_full_group_by 模式

SET SQL_MODE = 'ALLOW_PARTIAL_GROUP_BY';

SELECT * FROM table_name GROUP BY column1, column3;
-- 不会抛出错误,group by 允许部分字段

需要注意的是,禁用 only_full_group_by 模式可能会对查询结果的准确性产生负面影响。 dlatego disarankan untuk menggunakan modenya hanya jika benar-benar diperlukan.

以上就是MySQL 分组查询中 GROUP BY 要求:何时需要禁用 ONLY_FULL_GROUP_BY 模式?的详细内容,更多请关注其它相关文章!