这已经困扰了我很长一段时间.
99%的时候,GROUP BY子句是SELECT子句的精确副本,减去了聚合函数(MAX,SUM等).
这打破了"不要重复自己"的原则.
什么时候GROUP BY子句不能包含SELECT子句的精确副本减去聚合函数?
我意识到一些实现允许你在GROUP BY中使用不同于SELECT的字段(因此99%,而不是100%),但这肯定是一个非常小的例外?
如果您使用不同的字段,有人可以解释应该返回的内容吗?
谢谢.
为什么SQL要求我指定要分组的属性?为什么不能只使用所有非聚合?
如果一个属性没有被聚合而且不在GROUP BY子句中,那么非确定性选择将是唯一的选择,假设元组是无序的(mysql有点这样)并且这是一个巨大的问题.据我所知,Postgresql要求必须聚合未出现在GROUP BY中的所有属性,这强化了它是多余的.