1. 程式人生 > 資料庫 >MySQL-where 和 having的區別

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就不可以

 

參考: