天天看點

SQL Server内連接配接、左外連接配接、右外連接配接、完全連接配接、交叉lianjie

資料準備:

create table T1(
A varchar(10) not null,
B varchar(10) not null,
C tinyint not null
);

create table T2(
B varchar(10) not null,
E tinyint not null
);


insert into T1
values
(\'a1\', \'b1\', 5),
(\'a1\', \'b2\', 6),
(\'a2\', \'b3\', 8),
(\'a2\', \'b4\', 12);

insert into T2
values
(\'b1\', 3),
(\'b2\', 7),
(\'b3\', 10),
(\'b3\', 2),
(\'b5\', 2);

select * from T1;
select * from T2;      

結果:

1 A          B          C
 2 ---------- ---------- ----
 3 a1         b1         5
 4 a1         b2         6
 5 a2         b3         8
 6 a2         b4         12
 7 
 8 (4 行受影響)
 9 
10 B          E
11 ---------- ----
12 b1         3
13 b2         7
14 b3         10
15 b3         2
16 b5         2
17 
18 (5 行受影響)      

1、内連接配接

1 select * from T1 inner join T2 on T1.B = T2.B
2 
3 A          B          C    B          E
4 ---------- ---------- ---- ---------- ----
5 a1         b1         5    b1         3
6 a1         b2         6    b2         7
7 a2         b3         8    b3         10
8 a2         b3         8    b3         2      

2、左外連接配接

1 select * from T1 left outer join T2 on T1.B = T2.B
2 
3 A          B          C    B          E
4 ---------- ---------- ---- ---------- ----
5 a1         b1         5    b1         3
6 a1         b2         6    b2         7
7 a2         b3         8    b3         10
8 a2         b3         8    b3         2
9 a2         b4         12   NULL       NULL      

3、右外連接配接

1 select * from T1 right outer join T2 on T1.B = T2.B
2 
3 A          B          C      B          E
4 ---------- ----------   ---- ---------- ----
5 a1         b1         5      b1         3
6 a1         b2         6      b2         7
7 a2         b3         8      b3         10
8 a2         b3         8      b3         2
9 NULL     NULL     NULL b5         2      

4、完全連接配接

1 select * from T1 full outer join T2 on T1.B = T2.B
 2 
 3 A            B            C       B          E
 4 ---------- ---------- ---- ---------- ----
 5 a1           b1           5       b1         3
 6 a1           b2           6       b2         7
 7 a2           b3           8       b3         10
 8 a2           b3           8       b3         2
 9 a2           b4           12     NULL      NULL
10 NULL       NULL       NULL  b5         2      

5、交叉連接配接(笛卡爾乘積)

1 select * from T1 cross join T2
 2 
 3 A          B          C    B          E
 4 ---------- ---------- ---- ---------- ----
 5 a1         b1         5    b1         3
 6 a1         b1         5    b2         7
 7 a1         b1         5    b3         10
 8 a1         b1         5    b3         2
 9 a1         b1         5    b5         2
10 a1         b2         6    b1         3
11 a1         b2         6    b2         7
12 a1         b2         6    b3         10
13 a1         b2         6    b3         2
14 a1         b2         6    b5         2
15 a2         b3         8    b1         3
16 a2         b3         8    b2         7
17 a2         b3         8    b3         10
18 a2         b3         8    b3         2
19 a2         b3         8    b5         2
20 a2         b4         12   b1         3
21 a2         b4         12   b2         7
22 a2         b4         12   b3         10
23 a2         b4         12   b3         2
24 a2         b4         12   b5         2