面試常見SQL中where和having的區別你確定你知道嗎!


作者:季沐測試筆記
原文地址https://www.cnblogs.com/testero/p/15113536.html
博客主頁https://www.cnblogs.com/testero

概述

  • “Where” 是一個約束聲明,使用Where來約束來之數據庫的數據,Where是在結果返回之前起作用的,且Where中不能使用聚合函數。
  • “Having” 是一個過濾聲明,是在查詢返回結果集以后對查詢結果進行的過濾操作,在Having中可以使用聚合函數。
  • 本質的區別就是where篩選的是數據庫表里面本來就有的字段,而having篩選的字段是從前篩選的字段篩選的。

where和having都可以使用的場景:

SELECT的語法順序就是起執行順序

FROM
WHERE (先過濾單表/視圖/結果集,再JOIN)
GROUP BY
HAVING (WHERE過濾的是行,HAVING過濾的是組,所以在GROUP之后)
ORDER BY

1、可用於的語句不用

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

2、執行的順序不一樣

where的搜索條件是在執行語句進行分組之前應用
having的搜索條件是在分組條件后執行的
即如果where和having一起用時,where會先執行,having后執行

3、子句有區別

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

4、總結

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM