SQL中where和on的區別
where是從查詢的結果中篩選符合的記錄,on是在查詢時進行過濾,使查詢的結果只有符合條件的記錄。
定義一個學生表stu(id,name,scoreid)和一個成績表score(id,value),假設需要查詢name為張三的學生的成績。
select * from stu inner join score on stu.scoreid=score.id and stu.name='張三';
select * from stu inner join score on stu.scoreid=score.id where stu.name='張三';
來看一下兩個查詢語句的區別,為了方便理解,此處假設查詢過程中有一個臨時表來存放查詢出來的資料。第一條語句表示在獲取資料到臨時表的時候過濾掉所有不符合條件的資料,只獲取到張三的成績資料到臨時表,然後顯示出來。第二條語句則是先獲取到所有人的成績資料到臨時表,然後通過where條件從臨時表裡篩選出張三的記錄顯示出來。區別在於on條件是隻獲取到指定資料,但是where條件是先獲取到所有資料再去篩選,所以on的效率要比where高。
相關文章
- Python 字典實現原理
- [練手]CantoneseCool 一個能說廣東話的小程式。
- SQL語句中聚合函式忽略NULL值的總結
- python 爬取飄花電影 下載地址
- 同步模式(Synchronous)
- 非同步模式(Asynchronous)
- Python-input函式
- Mysql的下載,安裝,遠端連線,密碼加密規則修改。
- IDEA社群版(Community)和付費版(UItimate)的區別
- 簡單工廠模式、工廠方法模式和抽象工廠模式有何區別?
- python呼叫yolov3的小錯誤
- python any,call,init,下劃線知識彙總
- mysql8忘記密碼怎麼辦
- 如何自定義python語法.
- Navicat for MySQL開啟之後沒有顯示錶
- 小白不懂就問,學自動化測試,會 Java 可以嗎,還是必須得會 python (python 不太會)
- mysql 5.7新增server_audit 安全審計功能
- 讓面試官心服口服:Thread.sleep、synchronized、LockSupport.park的執行緒阻塞有何區別?
- Android ContentProvider 啟動分析