mysql 中where 和having 的区别
相同点二者都是对数据集进行的过滤
sql中where和having的区别
a. where 和having 使用的地方不一样
where可以用于select、update、delete和insert into values(select * from table where …)语句中。
having只能用于select语句中
b. 执行的顺序不一样
where的搜索条件是在执行语句进行group by 之前应用
having的搜索条件是在group by条件后执行的
即如果where和having一起用时,where会先执行,having后执行
c.子句有区别
因为执行顺序的区别,where 后面是对原数据进行的过滤,having是对结果集进行的过滤,所以having中可以使用别名,聚合函数等,而且having中字段必须出现在select 后面,where 只能对元数据字段进行过滤
where 后面要跟的是数据表里的字段,where针对数据库文件的发挥作用。
而having只是根据前面查询出来的结果集再次进行查询,因此having是针对结果集发挥作用。
注意事项
不要错误的认为having和group by 必须配合使用.having 单独也可以使用
1.where和having都可以使用的场景:
select goods_price,goods_name from goods where goods_price > 100
select goods_price,goods_name from goods having goods_price > 100
上面的having可以用的前提是我已经筛选出了