我为什么要写这个:
Having count(id) > 1
而不是:
Where count(id) > 1
这仅适用于英语吗?
我认为如果发明where子句的程序员可以让它接受聚合器
或者有什么理由吗?在加载数据或类似的东西?
答案 0 :(得分:4)
WHERE
对行进行操作,HAVING
对行集合(“groups”)进行操作。聚合函数不能用于单行,这没有任何意义。
对值集合进行操作的组(聚合)函数[...]如果在不包含GROUP BY子句的语句中使用组函数,则它等同于对所有行进行分组。
答案 1 :(得分:2)
原因是SQL按特定顺序评估项目,例如
如果你试图在“where”子句中评估聚合,那么它实际上没有意义,因为它需要在聚合之前应用“where”子句。