MySQL5.7 之后,也不允许 select 不在 group by 中的列,但是 join 之后就允许,这是为何?
2018-09-04 15:15:42 +08:00
abcbuzhiming
这是无意中发现的。MySQL5.7 后,为了让自己更符合 ASNI 的标准,不允许 select 不在 group 中的 lie,比如下列语句就不合法: select id, name from user group by name 但是神奇的是,只要加上 join 就能绕过 select user.id, user.name, class_name from user left join class_info on user.class_id = class_info.id group by user.name, class_name 这到底是 bug 还是什么
实际上 MySQL5.7 这样设计才是正确的,5.7 的 sql_mode 有一个 ONLY_FULL_GROUP_BY 配置项,查不在 group 中的列其实没有什么意义,不是 bug,只是 MySQL 更加趋向于严格模式
cdlixucd
2018-09-04 15:52:38 +08:00
@nosay 我执行了报错‘ ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'test.Persons.LastName' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by ’