在學習資料庫的時候常常會遇到on和where今天就講講on和where的差別。
資料庫在透過連接兩張或多張表來傳回記錄時,都會產生一張中間的臨時表,然後再將這張臨時表傳回給使用者。
使用 left join 時,on 和 where 條件的差異如下:
1、on 條件是產生臨時表時所使用的條件,它不管 on 中的條件是否為真,都會傳回左邊表中的記錄。
2、where 條件是在臨時表生成好後,再過濾臨時表的條件。這時已經沒有 left join 的意思(必須回左邊表的記錄)了,條件不為真的就全部過濾掉。
假設有兩張表:
表1:tab1
id size1 102 203 30
表2:tab2
size name10 AAA20 BBB20 CCC
兩個SQL:
1、select * from tab1 left join tab2 on tab1.size = tab2.size where tab2.name='AAA'2、 select * from tab1 left join tab2 on tab1.size = tab2.size and tab2.name='AAA'
第一個SQL的過程:
1、中間表格
on 條件:
tab1.size = tab2.size tab1.id tab1.size tab2.size tab2.name1 10 10 AAA2 20 20 BBB2 20 20 CCC3 30 (null) (null)
2、再對中間表過濾
where 條件:
tab2.name='AAA' tab1.id tab1.size tab2.size tab2.name1 10 10 AAA
第二個SQL的過程:
1、中間表
on 條件:
tab1.size = tab2.size and tab2.name='AAA'(條件不為真也會傳回左表中的記錄)
#tab1 .id 為,full join 的特殊性。
關於php 壓縮CSS程式碼的方法
以上是SQL 中 on 條件與 where 條件的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!