在5.7中,sql_mode默认包含:
ONLY_FULL_GROUP_BY
STRICT_TRANS_TABLES
NO_ZERO_IN_DATE
NO_ZERO_DATE
ERROR_FOR_DIVISION_BY_ZERO
NO_AUTO_CREATE_USER
NO_ENGINE_SUBSTITUTION
ONLY_FULL_GROUP_BY
SELECT name, address, MAX(age) FROM t GROUP BY name;这种语句严格来说是语法错误的,但是mysql在不指定ONLY_FULL_GROUP_BY时时合法的。甚至SELECT name, address, MAX(age) FROM t 也是合法的。如果指定ONLY_FULL_GROUP_BY,那么比如写成SELECT name, address, MAX(age) FROM t GROUP BY name, address;。
个人感觉这个限制应该要加上。