问题
SELECT子句中出现的字段,必须在GROUP BY子句也要出现该字段,才不会出现 ONLY_FULL_GROUP_BY问题。
解决
使用ANY_VALUE()
函数,来忽略GROUP BY对SELECT子句中字段的检查。
SELECT name, address, MAX(age) FROM t GROUP BY address, name;
如果,想把上面语句中的GROUP BY子句中的address字段去掉,MySQL可能会报ONLY_FULL_GROUP_BY问题。这里只需要在SELECT子句字段上面加上ANY_VALUE()
函数,就可以忽略对该字段的检查。
SELECT name, ANY_VALUE(address), MAX(age) FROM t GROUP BY name;