为啥不应该禁用 ONLY_FULL_GROUP_BY
Posted
技术标签:
【中文标题】为啥不应该禁用 ONLY_FULL_GROUP_BY【英文标题】:Why should not disable ONLY_FULL_GROUP_BY为什么不应该禁用 ONLY_FULL_GROUP_BY 【发布时间】:2021-02-25 16:09:08 【问题描述】:在互联网搜索过程中,我看到很多关于禁用ONLY_FULL_GROUP_BY
功能的问题,因此这意味着很多开发人员在这种严格模式下编写 SQL 查询时遇到了麻烦。
我知道禁用此限制非常简单,但现在我问: 我为什么不应该这样做?
取消ONLY_FULL_GROUP_BY
限制会带来什么问题或副作用?
【问题讨论】:
阅读手册:dev.mysql.com/doc/refman/5.7/en/group-by-handling.html 和 dev.mysql.com/doc/refman/5.7/en/…。简而言之,这似乎是为了避免在某些情况下产生歧义。 【参考方案1】:如果没有ONLY_FULL_GROUP_BY
强制执行的严格性,您可以:
所以听ONLY_FULL_GROUP_BY
。它强烈警告您的查询不正确。错误只是说您的 GROUP BY
子句与返回的结果集不兼容。其他数据库默认强制执行,因此其用户编写的 SQL 更好。
忽略警告就像网络开发人员chmod a+rwx
,因为他们无法计算文件权限。花点时间了解你工作的环境,你会获得更好的体验。下一个查看 SQL 的人(可能是您未来的自己)也会如此。
【讨论】:
以上是关于为啥不应该禁用 ONLY_FULL_GROUP_BY的主要内容,如果未能解决你的问题,请参考以下文章
为啥在卸载相关组件时保持“模态背景淡化显示”存在,我应该如何“删除/禁用”这个 div
为啥默认禁用 TypeScript 中的不安全/非严格编译器规则?
如果用户在 IOS 中禁用了后台应用刷新,为啥不发送推送通知?
为啥在禁用 webdav 后,在本地工作的 WebApi 的 DELETE 请求上出现 405 方法不允许错误?