MySQL 聚合查询错误:对“only_full_group_by”模式进行故障排除
在 MySQL 5.7.5 及更高版本中,引入了一个微妙但影响深远的更改,影响聚合查询,例如本讨论中提出的查询。臭名昭著的“未捕获异常‘PDOException’”错误表明查询违反了 MySQL 5.7.5 中引入的 only_full_group_by SQL 模式。
此模式强制执行关系数据库中的古老原则:当执行聚合(count、sum、max 等)时,所有非聚合列必须包含在 GROUP BY 子句中。违反此规则的查询将不再像早期 MySQL 版本中那样被默默忽略。
理解此更改背后的原因至关重要。通过防止在 SELECT 子句中使用非聚合列进行查询,但不在 GROUP BY 子句中进行查询,MySQL 确保了数据的准确性和一致性。此类查询可能会产生不明确的结果,通常会导致错误的分析和决策。
解决此错误需要双管齐下:
修改 MySQL设置(选项 1):
重构查询(选项 2):
理想的解决方案是修改查询以符合 only_full_group_by 模式。这涉及到在 GROUP BY 子句中包含所有非聚合列:
例外规则:
以上是以下是一些标题选项,请记住问答格式: 选项 1(关注错误): * MySQL 聚合查询错误:\'only_full_group_by\' - 如何修复\'PDO的详细内容。更多信息请关注PHP中文网其他相关文章!