測試left join和where的優先級


--create table tab1
--(
--id int,
--size int
--)

--create table tab2
--(
--size int,
--name varchar(10)
--)

--insert into tab1 values(1,10)
--insert into tab1 values(2,20)
--insert into tab1 values(3,30)

--insert into tab2 values(10,'AAA')
--insert into tab2 values(20,'BBB')
--insert into tab2 values(20,'DDD')
--insert into tab2 values(30,'CCC')

--select * from tab1 left join tab2 on (tab1.size = tab2.size) where tab2.name='AAA'
--select * from tab1 left join tab2 on (tab1.size = tab2.size and tab2.name='AAA')


--on和where的區別
--區別:on是對中間結果進行篩選,where是對最終結果篩選。
--執行順序:
--先進行on的過濾, 而后才進行join。
--效率:
--如果是inner join, 放on和放where產生的結果一樣,如果有outer join (left or right), 就有區別了, 因為on生效在先, 已經提前過濾了一部分數據, 而where生效在后.

 


免責聲明!

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



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