为什么不应该禁用 ONLY_FULL_GROUP_BY

Sla*_*nev 4 mysql group-by aggregation

在互联网搜索过程中,我现在看到很多关于禁用该ONLY_FULL_GROUP_BY功能的问题,因此这意味着很多开发人员在这种严格模式下编写 SQL 查询时遇到了麻烦。

我知道禁用此限制非常简单,但现在我问一个问题: 为什么我不应该这样做?

取消限制会带来什么问题或副作用ONLY_FULL_GROUP_BY

dan*_*ack 7

如果没有强制执行的严格性ONLY_FULL_GROUP_BY,您可以:

  • 没有意识到您的查询有误;
  • 得到一些没有特定含义的列;
  • 您获得的结果可能不是出现在不同服务器上、下次升级时或查询计划更改(添加/删除/更新数据)时的结果。

所以听听ONLY_FULL_GROUP_BY。这是一个强烈的警告,表明您的查询不正确。该错误只是表明您的GROUP BY子句与返回的结果集不兼容。其他数据库默认强制执行它,因此其用户可以编写更好的 SQL。

忽略警告就像网络开发人员一样,chmod a+rwx因为他们无法确定文件权限。花点时间了解您的工作环境,您会因这种体验而受益匪浅。下一个人(可能是未来的你)也会查看 SQL。