各位老大,WHERE和HAVING可以同时在SQL中使用吗?有何禁忌?

时间:2021-09-30 20:09:09
各位老大,WHERE和HAVING可以同时在SQL中使用吗?有何禁忌?
能否全用HAVING,不用WHERE?

7 个解决方案

#1


可以同时使用,
一般来说先用WHERE,后用HAVING
对查询的结果再过滤

#2


汇总函数不能工作在WHERE 子句中,如果条件中有汇总函数的话需要使用HAVING

#3


楼上兄弟的解释是一个方面,其实WHERE 和 HAVING的最大区别是它们参与过滤的次序不同(只有在分组的情况下才使用HAVING),举个例子:
列出税额大于3000姓李的用户
select name,sum(tax) from taxdbt where name like '李%' group by name having sum(tax)>3000
首先按姓名统计所有姓李的税额,再过滤出大于3000的记录。

#4


应该是可以的(在嵌套查询里面可以的),如果是非嵌套的一条查询中应该是不能用的!

#5


select count(*) as sl,s2 from tablename where a1>1000 
group by s1 having count(*)>1

s3,a1为库中的字段

#6


having一般和Group by语句一起用
如果用group by分组的话,可以把having当作分组后的过滤。

#7


楼上兄弟的解释是一个方面,其实WHERE 和 HAVING的最大区别是它们参与过滤的次序不同(只有在分组的情况下才使用HAVING),举个例子:
列出税额大于3000姓李的用户
select name,sum(tax) from taxdbt where name like '李%' group by name having sum(tax)>3000
首先按姓名统计所有姓李的税额,再过滤出大于3000的记录。lfny

你是不是做税务方面软件的

#1


可以同时使用,
一般来说先用WHERE,后用HAVING
对查询的结果再过滤

#2


汇总函数不能工作在WHERE 子句中,如果条件中有汇总函数的话需要使用HAVING

#3


楼上兄弟的解释是一个方面,其实WHERE 和 HAVING的最大区别是它们参与过滤的次序不同(只有在分组的情况下才使用HAVING),举个例子:
列出税额大于3000姓李的用户
select name,sum(tax) from taxdbt where name like '李%' group by name having sum(tax)>3000
首先按姓名统计所有姓李的税额,再过滤出大于3000的记录。

#4


应该是可以的(在嵌套查询里面可以的),如果是非嵌套的一条查询中应该是不能用的!

#5


select count(*) as sl,s2 from tablename where a1>1000 
group by s1 having count(*)>1

s3,a1为库中的字段

#6


having一般和Group by语句一起用
如果用group by分组的话,可以把having当作分组后的过滤。

#7


楼上兄弟的解释是一个方面,其实WHERE 和 HAVING的最大区别是它们参与过滤的次序不同(只有在分组的情况下才使用HAVING),举个例子:
列出税额大于3000姓李的用户
select name,sum(tax) from taxdbt where name like '李%' group by name having sum(tax)>3000
首先按姓名统计所有姓李的税额,再过滤出大于3000的记录。lfny

你是不是做税务方面软件的