MySQL-where 和 having的区别

一张表 id, name, gender, salery

在大多数情况下,where和having是可以等价使用的,比如下面的情况就是等价的:

select id,name,gender where gender='男'

select id, name,gender having gender='男'

或者:

select id,name,gender where id>5

select id,name,gender having id>5

但是下面的情况就会出现不同。

区别1:

select id,name,gender where salery > 50这个是可以正常运行的,可是

select id,name,gender having salery > 50 就会报错,因为having的字段必须再select的字段中出现

区别2:

select id as a, name as b,gender as c where a>50 这个就要报错,因为where不能直接使用别名

select id as a, name as b,gender as c having a>50 这个就可以正确查询出数据,因为having可以直接使用别名

区别3:having 后面可以跟聚合函数,where就不可以

 

参考:

 

上一篇:牛客数据库刷题


下一篇:SQL基础笔试题--(一)