天天看點

左連接配接與右連接配接以及查詢時的條件

1:表結構

   test1                           test2

id    name                  id            temp

1     bai                   1             ming

2     bai                   2             jie

3     ming                  3             bai

4     yu                    4             zhang

5     zhang                 5             wan

6     wan                   6             yi

7     yi                    8             ai

2:文法

select *

from

(select * from test1) ttt1

left join

(select * from test2)ttt2

on ttt1.id = ttt2.id

and ttt2.id > 2 and ttt1.id >1

3:結果

id   name         id     temp

1    bai         NULL   NULL

2    bai         NULL   NULL

3    ming         3     bai

4    yu           4     zhang

5    zhang        5     wan

6    wan          6     yi 

7    yi          NULL   NULL

4:說明

對于示例兩表的左連接配接由于test1為左表,是以結果中儲存了test1的所有項

而根據條件ttt1.id = ttt2.id 我們将test2中id等于test1中id的項附加到ttt1後面

由于沒有test2.id中沒有id=7的項,是以第7行後兩列資料為空。

根據條件ttt1.id > 1 說明 test1表中隻提供id>1的項供test2進行比對操作,是以第一行後兩列為空

根據條件ttt2.id > 2 說明 test2隻選擇id>2的項,去與test1提供的,可以進行比對的項來比對,是以第二行盡管test1允許被比對,但由于test2不提供此項來比對,是以後兩列資料仍然為空。

5:注意事項

左連接配接時必須是有on條件,否則會報錯。

test1相當于主表,其中所有項在結果集中都會被儲存。

所有針對test1所設的條件都相當于篩選提供被比對的項

test2相當于輔表,其中隻有符合所有比對條件的項才會被儲存,否則為null

所有針對test2所設定的條件都相當于選擇項來與test1提供的比對的項來比對。

on 是在生成臨時表時用于篩選條件,而where則是在生成後進行選擇,不會儲存test1中所有項