各種JOIN 用法

2021-04-29 01:59:37 字數 1605 閱讀 7957

declare @ta table (id int,va varchar(10))

declare @tb table (id int,vb varchar(10))

insert into @ta select 1,'aa' 

insert into @ta select 2,'bc'

insert into @ta select 3,'ccc'

insert into @tb select 1,'2'

insert into @tb select 3,'58'

insert into @tb select 4,'67'

--內連線簡單寫法
select a.id,a.va,b.id,b.vb from @ta a,@tb b

where a.id=b.id

--內連線
select a.id,a.va,b.id,b.vb from @ta a inner join @tb b

on a.id=b.id

select a.id,a.va,b.id,b.vb from @ta a join @tb b

on a.id=b.id

--左連線(左外連線)

--返回left join 子句中指定的左表的所有行,以及右表所匹配的行。

select a.id,a.va,b.id,b.vb from @ta a left join @tb b

on a.id=b.id

select a.id,a.va,b.id,b.vb from @ta a left outer join @tb b

on a.id=b.id

--右連線(右外連線)

--返回right join 子句中指定的右表的所有行,以及左表所匹配的行。

select a.id,a.va,b.id,b.vb from @ta a right join @tb b

on a.id=b.id

select a.id,a.va,b.id,b.vb from @ta a right outer join @tb b

on a.id=b.id

--完整外連線

--等同左連線+右連線

select a.id,a.va,b.id,b.vb from @ta a full join @tb b

on a.id=b.id

select a.id,a.va,b.id,b.vb from @ta a full outer join @tb b

on a.id=b.id

--交叉連線

--沒有兩個表之間關係的交叉連線,將產生連線所涉及的表的笛卡爾積。

select a.id,a.va,b.id,b.vb from @ta a cross join @tb b
select a.id,a.va,b.id,b.vb from @ta a,@tb b
--自連線

--乙個表和其本身連線。

select a.id,a.va,b.id,b.va from @ta a,@ta b where a.id=b.id+1

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 ...

一文徹底了解join的各種用法

表a 表b a1 a2 b1 b2 a01 張三 a02 數學 a02 李四 a03 語文 a03 王五 a04 英語 1selecta.a2,b.b2fromaleftjoinbona.a1 b.b1 張三 李四 數學 王五 語文 1selecta.a2,b.b2fromainnerjoinbon...

各種 join 防止忘記

a表 a1,b1,c1 b表 a2,b2 a1 b1 c1 a2 b2 01 數學 95 01 張三 02 語文 90 02 李四 03 英語 80 04 王五 select a.b.from a inner join b on a.a1 b.a2 結果是 a1 b1 c1 a2 b2 01 數學 ...