SQL Server内连接左外连接右外连接完全连接交叉lianjie

Posted 许小伍

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于SQL Server内连接左外连接右外连接完全连接交叉lianjie的主要内容,如果未能解决你的问题,请参考以下文章

SQL中的左连接与右连接,内连接有啥区别

深入理解SQL的四种连接-左外连接右外连接内连接全连接

SQL:内连接左外连接右外连接全连接交叉连接区别

SQL的四种连接-左外连接右外连接内连接全连接

转深入理解SQL的四种连接-左外连接右外连接内连接全连接

什么是左外连接 SQLserver