【Oracle_SQL】oracle常用连接2升级版

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/debimeng/article/details/86604163

【Oracle_SQL】oracle常用连接2升级版

oracle常用连接1

1、a表有一行记录与b表的两行记录匹配

两表的字段名和数据如下:

test_a表       test_b表
字段:no,name       字段:no,name
1,a       2,c
2,b       2,d

left连接:

select a.no,a.name, b.no,b.name from test_a a left join test_b b on a.no = b.no;

  a.no a.name b.no b.name
left 2 b 2 c
  2 b 2 d

right连接:

select a.no,a.name, b.no,b.name from test_a a right join test_b b on a.no = b.no;

  a.no a.name b.no b.name
right 2 b 2 d
  2 b 2 c

inner连接:

select a.no,a.name, b.no,b.name from test_a a inner join test_b b on a.no = b.no;

  a.no a.name b.no b.name
inner 2 b 2 d
  2 b 2 c

full连接:

select a.no,a.name, b.no,b.name from test_a a full join test_b b on a.no = b.no;

  a.no a.name b.no b.name
full 2 b 2 c
  2 b 2 d
  1 a full full

2、a表有2行记录与b表的2行记录匹配

两表的字段名和数据如下:

test_a表       test_b表
字段:no,name       字段:no,name
1,a       2,d
2,b       2,e
2,c        

left连接:

select a.no,a.name, b.no,b.name from test_a a left join test_b b on a.no = b.no;

  a.no a.name b.no b.name
left 2 c 2 d
  2 b 2 d
  2 c 2 e
  2 b 2 e
  1 a null null

right连接:

select a.no,a.name, b.no,b.name from test_a a right join test_b b on a.no = b.no;

  a.no a.name b.no b.name
right 2 b 2 e
  2 b 2 d
  2 c 2 e
  2 c 2 d

inner连接:

select a.no,a.name, b.no,b.name from test_a a inner join test_b b on a.no = b.no;

  a.no a.name b.no b.name
inner 2 b 2 e
  2 b 2 d
  2 c 2 e
  2 c 2 d

full连接:

select a.no,a.name, b.no,b.name from test_a a full join test_b b on a.no = b.no;

  a.no a.name b.no b.name
full 2 b 2 d
  2 c 2 d
  2 b 2 e
  2 c 2 e
  1 a null null

总结:

基于以上结果的总结-----

先显示匹配后显示不匹配项,除内连接只显示匹配项;
左连接:匹配项顺序按左表的后往前,如右表有多个匹配项,左表匹配项和右表从上往下的一行为一个循环;
右连接:与左连接相反;
全连接:与左连接一样;
内连接:与左连接相反;                                
 

猜你喜欢

转载自blog.csdn.net/debimeng/article/details/86604163