萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> Mysql中where與having用法區別詳解

Mysql中where與having用法區別詳解

很多初用mysql的朋友可能搞不清楚在mysql中where與having的區別在哪裡,下面我來簡單的舉幾個實例來介紹where與having的區別吧。

讓我們先運行2個sql語句:

 代碼如下 復制代碼


SELECT * FROM `welcome` HAVING id >1 LIMIT 0 , 30


SELECT * FROM `welcome` WHERE id >1 LIMIT 0 , 30

查看一下結果吧,怎麼樣?是不是查詢到相同的結果。

讓我們再看2個sql語句:

 代碼如下 復制代碼


SELECT user, MAX(salary) FROM users GROUP BY user HAVING MAX(salary)>10;


SELECT user, MAX(salary) FROM users GROUP BY user WHERE MAX(salary)>10;

怎麼樣?看出差別了嗎,第一個sql語句可以正常運行【舊版mysql可能會出錯】,而第二個則會報錯。

如果你沒看出我們再看

•WHERE子句是在第一步從表或視圖中配全SELECT子句把數據過濾性地查詢出來。如:

 

 代碼如下 復制代碼 1.select * from table_a where title1='a'; 
select * from table_a where title1='a';

•HAVING子句是在SELECT子句與WHERE子句把查詢出來的結果存放到內存中的二次過濾。如:
 

 代碼如下 復制代碼 1.select * from table_a   
2.where title1='a'   
3.having content2 like 'b%' 


總結

二者相似,卻也有不同。讓我們簡單了解一下。

where和having的區別是where子句對一個表的所有記錄進行操作,只搜索與指定條件相匹配的記錄。

而having子句只對經過操作的表記錄進行檢索,對結果集進行更進一步的篩選。

通常,having子句和group by子句相連,而where子句和select,delete和update語句相連。

copyright © 萬盛學電腦網 all rights reserved