SQL的各種連線Join詳解

2022-07-04 13:21:12 字數 2825 閱讀 7657

sql join 子句用於把來自兩個或多個表的行結合起來,基於這些表之間的共同字段。

最常見的 join 型別:sql inner join(簡單的 join)、sql left join、sql  right join、sql full join,其中前一種是內連線,後三種是外鏈結。

假設我們有兩張表,table a是左邊的表,table b是右邊的表。

idname

1google2**

3微博4facebook

idaddress1美國

5中國3中國

6美國inner join

內連線是最常見的一種連線,只連線匹配的行。

inner join語法

select column_name(s)

from table 1

inner join table 2

ontable 1.column_name=table 2.column_name

注釋:inner join與join是相同

inner join產生的結果集中,是1和2的交集。

select * from table a inner join table b

on table a.id=table b.id

執行以上sql輸出結果如下:

idname

address

1google美國3

微博中國

left join

left join返回左表的全部行和右表滿足on條件的行,如果左表的行在右表中沒有匹配,那麼這一行右表中對應資料用null代替。

left join 語法

select column_name(s)

from table 1

left join table 2

on table 1.column_name=table 2.column_name

注釋:在某些資料庫中,left join 稱為left outer join

left join產生表1的完全集,而2表中匹配的則有值,沒有匹配的則以null值取代。

select * from table a left join table b

on table a.id=table b.id

執行以上sql輸出結果如下:

idname

address

1google美國2

**null3微博

中國4facebook

null

right join

right join返回右表的全部行和左表滿足on條件的行,如果右表的行在左表中沒有匹配,那麼這一行左表中對應資料用null代替。

right join語法

select column_name(s)

from table 1

right join table 2

on table 1.column_name=table 2.column_name

注釋:在某些資料庫中,right join 稱為right outer join

right join產生表2的完全集,而1表中匹配的則有值,沒有匹配的則以null值取代。

select * from table a right join table b

on table a.id=table b.id

執行以上sql輸出結果如下:

idname

address

1google美國5

null中國3

微博中國

6null

美國full outer join

full join 會從左表 和右表 那裡返回所有的行。如果其中乙個表的資料行在另乙個表中沒有匹配的行,那麼對面的資料用null代替

full outer join語法

full outer join產生1和2的並集。但是需要注意的是,對於沒有匹配的記錄,則會以null做為值。

select * from table a full outer join table b

on table a.id=table b.id

執行以上sql輸出結果如下:

idname

address

1google美國2

**null3微博

中國4facebook

null

5null中國6

null

美國

SQL的各種連線Join詳解

sql join 子句用於把來自兩個或多個表的行結合起來,基於這些表之間的共同字段。最常見的 join 型別 sql inner join 簡單的 join sql left join sql right join sql full join,其中前一種是內連線,後三種是外鏈結。假設我們有兩張表,t...

sql的各種join連線

1 select from tablea inner join tableb 2 on tablea.name tableb.name 3id name id name 4 51 pirate 2 pirate 63 ninja 4 ninja78 9inner join 10產生的結果集中,是a和...

也談SQL各種連線(JOIN)

最近公司在招人,同事問了幾個自認為資料庫可以的應聘者關於庫連線的問題,回答不盡理想 現在在這寫寫關於它們的作用 假設有如下表 乙個為投票主表,乙個為投票者資訊表 記錄投票人ip及對應投票型別,左右連線實際說是我們聯合查詢的結果以哪個表為準 1 如右接連 right join 或 right oute...