Cra*_*lus 3 mysql sql group-by aggregate-functions
我知道只有在Group By包含它们的情况下才允许使用普通列后跟聚合函数.
但是,为什么以下工作呢?
mysql> select payee,sum(amount) from checks;
+---------+-------------+
| payee | sum(amount) |
+---------+-------------+
| Ma Bell | 893.76 |
+---------+-------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
MySQL扩展了使用范围,
GROUP BY因此选择列表可以引用GROUP BY子句中未命名的非聚合列.
ONLY_FULL_GROUP_BY不允许选择列表或(从MySQL 5.1.10开始)HAVING列表引用未在GROUP BY子句中命名的非聚合列的查询.
最好是尊重的group by,并添加所有的非聚集列,尤其是如果有,你可能有一天迁移到了一台服务器可能ONLY_FULL_GROUP_BY打开.