only_full_group_by限制
时间: 2023-09-14 19:11:06 浏览: 111
MySql版本问题sql_mode=only_full_group_by的完美解决方案
`only_full_group_by` 是 MySQL 数据库的一个 SQL_MODE,用于设置严格的 GROUP BY 行为。在默认情况下,MySQL 的 GROUP BY 子句是宽松的,允许 SELECT 列表中出现的非聚合列。然而,启用 `only_full_group_by` 后,MySQL 将强制要求 GROUP BY 子句中的列必须是 SELECT 列表中的聚合函数或被 GROUP BY 的列。
这个限制的目的是确保查询结果的准确性,避免在 GROUP BY 查询时产生模糊或不一致的结果。当开启 `only_full_group_by` 时,如果 SELECT 列表中出现了非聚合列且未被 GROUP BY,MySQL将会抛出错误。
要解决这个问题,可以根据需要进行以下处理:
1. 将 SELECT 列表中的非聚合列添加到 GROUP BY 子句中。
2. 使用聚合函数对非聚合列进行计算,以便满足 `only_full_group_by` 的要求。
3. 修改 MySQL 的 SQL_MODE 设置,将 `only_full_group_by` 关闭(这可能会导致查询结果不准确)。
4. 对查询结果进行二次处理,使用子查询或临时表等方法来获取最终需要的结果。
请注意,在开启 `only_full_group_by` 后,要确保查询语句符合该限制,以避免错误的发生。
阅读全文