在SQL SELECT语句中,HAVING和WHERE的区别是什么?
编辑:我已经把Steven的答案标记为正确答案,因为它包含了链接上的关键信息:
当GROUP BY没有被使用时,HAVING就像一个WHERE子句
我在WHERE中看到的情况没有GROUP BY,这就是我的困惑开始的地方。当然,在你知道这一点之前,你不能在问题中指定它。
在SQL SELECT语句中,HAVING和WHERE的区别是什么?
编辑:我已经把Steven的答案标记为正确答案,因为它包含了链接上的关键信息:
当GROUP BY没有被使用时,HAVING就像一个WHERE子句
我在WHERE中看到的情况没有GROUP BY,这就是我的困惑开始的地方。当然,在你知道这一点之前,你不能在问题中指定它。
当前回答
WHERE和HAVING子句的区别:
WHERE子句和HAVING子句之间的主要区别是,WHERE用于行操作,HAVING用于列操作。
为什么我们需要HAVING从句?
我们知道,聚合函数只能在列上执行,所以不能在WHERE子句中使用聚合函数。因此,我们在HAVING子句中使用聚合函数。
其他回答
我使用HAVING来约束基于聚合函数结果的查询。例如:select * in blahblahblah group by SOMETHING having count(SOMETHING)>0
WHERE子句用于比较基表中的值,而HAVING子句可用于过滤查询结果集中的聚合函数的结果 点击这里!
HAVING:用于检查聚合发生后的条件。 WHERE:用于检查聚合前的条件。
这段代码:
select City, CNT=Count(1)
From Address
Where State = 'MA'
Group By City
给你一个表的所有城市在MA和地址在每个城市的数量。
这段代码:
select City, CNT=Count(1)
From Address
Where State = 'MA'
Group By City
Having Count(1)>5
给你一个在MA有超过5个地址的城市的表格,以及每个城市的地址数量。
我遇到了一个问题,并发现了WHERE和HAVING之间的另一个区别。它对索引列的作用不同。
WHERE my_indexed_row = 123将显示行,并自动对其他索引行执行“ORDER ASC”。
HAVING my_indexed_row = 123显示从最老的“插入”行到最新的行,没有顺序。
WHERE和HAVING子句的区别:
WHERE子句和HAVING子句之间的主要区别是,WHERE用于行操作,HAVING用于列操作。
为什么我们需要HAVING从句?
我们知道,聚合函数只能在列上执行,所以不能在WHERE子句中使用聚合函数。因此,我们在HAVING子句中使用聚合函数。