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高。
相關文章
- SQL中 where 子句和having子句中的區別SQL
- 【SQL】Oracle SQL join on語句and和where使用區別SQLOracle
- MyBatis中的<where>標籤和where子句的區別MyBatis
- SQL JOIN 中 on 與 where 有何區別SQL
- MySQL之Where和Having的區別MySql
- mysql的having和where有什麼區別MySql
- sql中UNION和UNION ALL的區別SQL
- 資料庫中where與having的區別資料庫
- Mysql-left join on後接and,和where的區別MySql
- SQL Server中count(*)和Count(1)的區別SQLServer
- MYSQL和SQL的區別MySql
- SQL語句中 left join 後用 on 還是 where,區別大SQL
- 在Pandas中 SQL操作:SQLAlchemy和PyMySQL的區別MySql
- sql語句中#{}和${}的區別SQL
- whereRaw 與 where (\DB::raw ()) 的區別
- SQL語句中exists和in的區別SQL
- SQL語句中not in 和not exist的區別SQL
- sql:left join和join區別SQL
- JavaScript中==和===的區別JavaScript
- Linux中“>”和“>>”的區別Linux
- Python 中 is 和 == 的區別Python
- Python中is和==的區別Python
- mysql中“ ‘ “和 “ ` “的區別MySql
- JavaScript中for in 和for of的區別JavaScript
- Js中for in 和for of的區別JS
- mysql中!=和is not的區別MySql
- CV關於Mysql中ON與Where區別問題詳解buaMySql
- PHP 中的 -> 和 :: 的區別PHP
- MySQL中普通sql與預編譯sql 區別MySql編譯
- powershell中的where和foreach比較
- java 中equals和==的區別Java
- deferred中done和then的區別
- T-SQL——關於Join on的的連線條件和where的篩選條件的區分SQL
- MySQL explain結果Extra中"Using Index"與"Using where; Using index"區別MySqlAIIndex
- JS中的!=、== 、!==、=== 的用法和區別JS
- left join 後用 on 還是 where,區別大了!
- sql server中的一個坑-len與datalength區別SQLServer
- MySQL中datetime和timestamp的區別MySql