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 中having 和where的區別SQL
- SQL join中on與where區別SQL
- SQL中 where 子句和having子句中的區別SQL
- SQL中Having與Where的區別SQL
- MyBatis中的<where>標籤和where子句的區別MyBatis
- SQL JOIN 中 on 與 where 有何區別SQL
- 【SQL】Oracle SQL join on語句and和where使用區別SQLOracle
- SQL中on條件與where條件的區別[轉]SQL
- 深入Oracle的left join中on和where的區別詳解Oracle
- MySQL之Where和Having的區別MySql
- where和having的區別小結
- SQL中IN和EXISTS用法的區別SQL
- oracle之group by,having和where的區別Oracle
- sql中UNION和UNION ALL的區別SQL
- 資料庫中where與having的區別資料庫
- mysql的having和where有什麼區別MySql
- Mysql-left join on後接and,和where的區別MySql
- SQL Server中count(*)和Count(1)的區別SQLServer
- SQL分組中WHERE和HAVING的異同SQL
- truncate和不帶where子句的delete, 以及drop區別delete
- MYSQL和SQL的區別MySql
- whereRaw 與 where (\DB::raw ()) 的區別
- SQL語句中 left join 後用 on 還是 where,區別大SQL
- 在Pandas中 SQL操作:SQLAlchemy和PyMySQL的區別MySql
- sql語句中#{}和${}的區別SQL
- SQL中儲存過程和函式的區別SQL儲存過程函式
- left join,right join,inner join的條件on和where的區別
- SQL Server中內連線和外連線的區別SQLServer
- SQL語句中exists和in的區別SQL
- SQL語句中not in 和not exist的區別SQL
- v$sql和v$sqlarea的區別SQL
- mysql中!=和is not的區別MySql
- JavaScript中for in 和for of的區別JavaScript
- mysql中“ ‘ “和 “ ` “的區別MySql
- Js中for in 和for of的區別JS
- JavaScript中==和===的區別JavaScript
- SQL SERVER中的頁和區SQLServer
- PHP 中的 -> 和 :: 的區別PHP