首頁  >  文章  >  後端開發  >  SQL 中 on 條件與 where 條件的區別

SQL 中 on 條件與 where 條件的區別

jacklove
jacklove原創
2018-05-22 10:55:232311瀏覽

在學習資料庫的時候常常會遇到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 的特殊性。

不管 on 上的條件是否為真都會傳回 left 或 right 表中的記錄,full 則具有 left 和 right 的特性的並集。

而 inner jion 沒這個特殊性,則條件放在 on 中和 where 中,傳回的結果集是相同的。

本篇講解了where和on的區別,更多相關知識請關注php中文網。

相關推進按:

關於php 壓縮CSS程式碼的方法


PHP接收json,並將接收資料插入資料庫


PHP MySql 分頁實例

以上是SQL 中 on 條件與 where 條件的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn