不经过悉心栽培,花儿开不出鲜艳的花朵;不经过时间的历练,幼苗长不成参天大树。

sql中having和where的简明说明及区别

database 建伟 834℃ 0评论

其实网上有许多文章已经说明了这俩个的区别用法,可是感觉都比较繁琐,不怎么明了,下面就已我的观点来简单举例说明一下

共同点:

1.都可以做一些查询筛选,设置指定条件,俩者都可以使用的情况下如下:

1
2
3
俩者都可以使用的情况
select goods_id,goods_name,goods_price from sw_goods where goods_price>1000
select goods_id,goods_name,goods_price from sw_goods having goods_price>1000

不同点:

1.where设置的条件 字段必须是数据库存在,having必须是select 查询出来的

1
2
3
只可以使用where 不可以使用having
select goods_id,goods_name from sw_goods where goods_price>1000
select goods_id,goods_name from sw_goods having goods_price>1000 语句错误

2.Where中不可以使用聚合函数(count,sum这些),但having中是可以使用聚合函数的,这是因为Where是在结果返回之前起作用的,having是一个过滤声明是在查询返回结果集以后对查询结果进行的过滤操作

1
2
select goods_category_id,avg(goods_price) as ag from sw_goods GROUP BY goods_category_id having ag>1000 可以的
select goods_category_id,avg(goods_price) as ag from sw_goods where ag >1000 GROUP BY goods_category_id 不可以

以上例子也看出,having就是来弥补where在分组数据判断时的不足。因为where执行优先级别要快于聚合语句。

上面是对having和where的一些简单说明,如果大家看了还有些迷茫的话,建议在多看看这类型的例子,相信你能很快理解。

转载请注明:Li Jianwei's Blog » sql中having和where的简明说明及区别

喜欢 (7)or分享 (0)
web技术交流群
22765697