【发布时间】:2018-01-11 01:12:35
【问题描述】:
我更新了 mysql,我从 MySQL 版本 5.6.17 转到了版本 5.7.14
因为我的 sql 查询有错误
确实,我的许多查询看起来像这样:
SELECT count (id) as nbr, lic from prep WHERE key = '18'
我有这个错误:
1140 - 在没有 GROUP BY 的聚合查询中,SELECT 列表的表达式 #2 包含非聚合列“operator.preparation.orig_lic”; 这与 sql_mode=only_full_group_by 不兼容
经过一番研究,得知Mysql 5.7.14默认激活ONLY_FULL_GROUP_BY
为什么默认开启?
什么是最好的解决方案(性能)?禁用 ONLY_FULL_GROUP_BY 或在我的查询中添加“分组依据”?
谢谢
【问题讨论】:
-
only_full_group_by 强制您命名 GROUP BY 原因中的所有 SELECT 字段.. 这样您就不能编写错误的 GROUP BY 查询而不命名所有字段...阅读此psce.com/en/blog/2012/05/15/…
-
@RaymondNijland 关于 GROUP BY 模式“ONLY_FULL_GROUP_BY”的精彩帖子。我正在寻找这样的演示文稿。非常感谢!!!