MYSQL中having和where的區別

小白學mysql中。。。
很容易把where和having弄混淆,特地總結一下,給新入門的小夥伴,大家共勉!
where是從數據表中的字段直接進行的篩選的,而having是從前面篩選的字段再篩選。

下面用一個例子來具體的講解:
全表爲:
在這裏插入圖片描述

  1. where和having都可以使用的場景

1)SELECT first_name,last_name FROM person_test WHERE first_name=‘s’;
在這裏插入圖片描述
2)SELECT first_name,last_name FROM person_test HAVING first_name=‘s’;
在這裏插入圖片描述
解釋:上面的having可以用的前提是我已經篩選出了first_name字段,在這種情況下和where的效果是等效的,但是如果沒有select first_name就會報錯!!因爲having是從前面篩選的字段再篩選,而where是從數據表中的字段直接進行的篩選的。

  1. 只可以用where,不可以用having的情況

1) SELECT first_name,last_name FROM person_test WHERE sex=‘male’;
在這裏插入圖片描述
2) SELECT first_name,last_name FROM person_test HAVING sex=‘male’;
在這裏插入圖片描述
//報錯!!!因爲前面並沒有篩選出sex字段

  1. 只可以用having,不可以用where情況

計算表中last_name,first_name一樣的信息:

1)SELECT COUNT() FROM person_test GROUP BY last_name,first_name HAVING COUNT()>1;
在這裏插入圖片描述
2)SELECT COUNT() FROM person_test GROUP BY last_name,first_name WHERE COUNT()>1;
在這裏插入圖片描述
//報錯!!因爲from person_test 這張數據表裏面沒有COUNT(*)這個字段

注意:where 後面要跟的是數據表裏的字段。而having只是根據前面查詢出來的是什麼就可以後面接什麼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章