我是SQL的新手,已阅读过很多来源,它只是告诉我使用HAVING代替。替代方案中是否有更多的解决方案或理由?
此外,在HAVING子句中使用聚合函数是不是一个错误?这与在where子句中使用一个有什么不同?
答案 0 :(得分:5)
WHERE子句中应用的条件是指在应用GROUP BY子句之前表中行的值,HAVING子句中的条件适用于GROUP-BY之后的结果集。 / p>
因此,您可以在HAVING子句中引用GROUP BY列或聚合,但不能在GROUP BY后引用其值不唯一的列。在WHERE子句中,GROUP BY的结果集不可用,因此可以引用任何行vaue,但不能有聚合结果。