MySQL-where 和 having的區別
阿新 • • 發佈:2021-01-14
一張表 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就不可以
參考: