DBAtlas · 数据库运维图谱

1055: Expression not in GROUP BY (only_full_group_by)(表达式不在 GROUP BY 中)

MySQL

含义

在 SELECT 列表或 HAVING/ORDER BY 中使用了既不在 GROUP BY 中、也未包裹在聚合函数中的列。由于启用了 ONLY_FULL_GROUP_BY SQL 模式,MySQL 拒绝这种不确定的表达式。

原因

查询直接选择了分组列之外的列,但该列在每个组中可能不止一个值。MySQL 5.7+ 默认启用 ONLY_FULL_GROUP_BY;依赖旧的宽松 GROUP BY 行为的查询会引发此错误。

解决方法

将该列加入 GROUP BY 列表,或将其包裹在聚合函数中(MAX()、MIN()、ANY_VALUE())。如果您确定该值在组内确实唯一,ANY_VALUE() 可以有意地消除歧义。禁用该模式(从 sql_mode 中移除 ONLY_FULL_GROUP_BY)而不修正查询,会重新带来结果错误的风险;应避免这样做。

在 DBAtlas 中打开 →

同一数据库的其他条目