SQL 各種 join 的區別

2021-10-08 04:02:45 字數 1981 閱讀 3425

參考:

[test@ora1

]sql

>

select

*from a;

編號 姓名

1000 張三

2000 李四

3000 王五

[test@ora1

]sql

>

select

*from b;

編號 商品

1000 電視機

2000 錄影機

4000 自行車

[test@ora1

]sql

>

select a.

*,b.

*from a cross

join b;

編號 姓名 編號 商品

1000 張三 1000 電視機

1000 張三 2000 錄影機

1000 張三 4000 自行車

2000 李四 1000 電視機

2000 李四 2000 錄影機

2000 李四 4000 自行車

3000 王五 1000 電視機

3000 王五 2000 錄影機

3000 王五 4000 自行車

注釋:

cross join 就是笛卡爾積 ( 等價 join 或 inner join 沒有寫 on 條件 ),

cross join 理論上也不支援 on 語法;

[test@ora1

]sql

>

select a.

*,b.

*from a join b on a.編號=b.編號;

編號 姓名 編號 商品

1000 張三 1000 電視機

2000 李四 2000 錄影機

[test@ora1

]sql

>

select a.

*,b.

*from a inner

join b on a.編號=b.編號;

編號 姓名 編號 商品

1000 張三 1000 電視機

2000 李四 2000 錄影機

注釋:

join 等價於 inner join, 與 cross join 區別就是存在 on 條件

[test@ora1

]sql

>

select a.

*,b.

*from a left

join b on a.編號=b.編號;

編號 姓名 編號 商品

1000 張三 1000 電視機

2000 李四 2000 錄影機

3000 王五 空值 空值

[test@ora1

]sql

>

select a.

*,b.

*from a right

join b on a.編號=b.編號;

編號 姓名 編號 商品

1000 張三 1000 電視機

2000 李四 2000 錄影機

空值 空值 4000 自行車

[test@ora1

]sql

>

select a.

*,b.

*from a full

join b on a.編號=b.編號;

編號 姓名 編號 商品

1000 張三 1000 電視機

2000 李四 2000 錄影機

3000 王五 空值 空值

空值 空值 4000 自行車

SQL 的各種 join 用法

下圖展示了 left join right join inner join outer join 相關的 7 種用法。具體分解如下 1 inner join 內連線 2 left join 左連線 select from table a a left join table b b on a.key ...

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詳解

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