mysql中 having 和 where 的區別

區別1

where是從數據表中的字段直接進行的篩選的。

having是從 前面篩選的字段再篩選

eg:  select goods_price,goods_name from goods having  goods_price > 100

                     等價於  

       select goods_price,goods_name from goods where goods_price > 100

 

select goods_name,goods_number from goods having  goods_price > 100   

// 報錯!!!因爲前面並沒有篩選出 goods_price 字段

 

區別2

having子句中可以使用字段別名,而where不能使用

 

區別3

having能夠使用統計函數,先分組,再判斷(having),但是where不能使用

 

 

用的地方不一樣

   where可以用於select、update、delete和insert into values(select * from table where ..)語句中。

   having只能用於select語句中

執行的順序不一樣

   where的搜索條件是在執行語句進行分組之前應用

   having的搜索條件是在分組條件後執行的

   即如果where和having一起用時,where會先執行,having後執行

子句有區別

   where子句中的條件表達式having都可以跟,而having子句中的有些表達式where不可以跟;having子句可以用集合函數(sum、count、avg、max和min),而where子句不可以。

總結

 1.WHERE 子句用來篩選 FROM 子句中指定的操作所產生的行。
2.GROUP BY 子句用來分組 WHERE 子句的輸出。
3.HAVING 子句用來從分組的結果中篩選行

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