posts - 110, comments - 101, trackbacks - 0, articles - 7
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

数据库版本:Oracle 9i

TESTA,TESTB,TESTC,各有A, B两列

A

B

001

10A

002

20A

A

B

001

10B

003

30B

A

B

001

10C

004

40C

连接分为两种:内连接与外连接。

A.内连接

内连接,即最常见的等值连接,例:

SELECT * 
FROM TESTA,TESTB
WHERE TESTA.A=TESTB.A


结果

A

B

A

B

001

10A

001

10B

B.外连接

外连接分为左外连接,右外连接和全外连接。

1.  左外连接 left outer join 或者 left join

左外连接就是在等值连接的基础上加上主表中的未匹配数据,例:

SELECT *
FROM TESTA 
LEFT OUTER JOIN TESTB 
ON TESTA.A=TESTB.A

Oracle 支持另一种写法

SELECT * 
FROM TESTA,TESTB
WHERE TESTA.A=TESTB.A(+)

结果:

A

B

A

B

001

10A

001

10B

002

20A

三个表做左外连接

SELECT *
FROM TESTA 
LEFT OUTER JOIN TESTB 
ON TESTA.A=TESTB.A
LEFT OUTER JOIN TESTC
ON TESTA.A=TESTC.A

Oracle 支持的另外一种写法

SELECT *
FROM TESTA,TESTB,TESTC
WHERE TESTA.A=TESTB.A(+)
AND TESTA.A=TESTC.A(+)

结果:

A

B

A

B

A

B

001

10A

001

10B

001

10C

002

20A

2. 右外连接 right outer join 或者 right join

右外连接是在等值连接的基础上加上被连接表的不匹配数据

SELECT *
FROM TESTA 
RIGHT OUTER JOIN TESTB 
ON TESTA.A=TESTB.A

Oracle支持的另一种写法

SELECT *
FROM TESTA,TESTB
WHERE TESTA.A(+)=TESTB.A

结果:

A

B

A

B

001

10A

001

10B

003

30B

3.全外连接 full outer join 或者 full join

全外连接是在等值连接的基础上将左表和右表的未匹配数据都加上

SELECT * 
FROM TESTA 
FULL OUTER JOIN TESTB
ON TESTA.A=TESTB.A

全外连接的等价写法,对同一表先做左连接,然后右连接

SELECT  TESTA.*,TESTB.*
FROM TESTA
LEFT OUTER JOIN TESTB
ON TESTA.A=TESTB.A
UNION
SELECT TESTA.*,TESTB.*
FROM TESTB
LEFT OUTER JOIN TESTA
ON TESTA.A=TESTB.A

结果:

A

B

A

B

001

10A

001

10B

002

20A

003

30B



评论

# re: Oracle内连接、外连接、右外连接、全外连接小总结  回复  更多评论   

2013-08-16 10:54 by 设计大师 小林
O(∩_∩)O谢谢

# re: Oracle内连接、外连接、右外连接、全外连接小总结[未登录]  回复  更多评论   

2013-12-05 19:12 by xxx
好文

# re: Oracle内连接、外连接、右外连接、全外连接小总结[未登录]  回复  更多评论   

2014-01-08 14:40 by 小欧
不会做哪些不和发的http://www.51fsk.com/(富士康直招网) http://www.huigongzuo.com/

http://www.luwuyou.com/ http://www.peixunt.com/ http://www.yuwomen.com/

# re: Oracle内连接、外连接、右外连接、全外连接小总结  回复  更多评论   

2014-03-10 16:56 by Cxb
很清晰易懂,谢谢

# re: Oracle内连接、外连接、右外连接、全外连接小总结  回复  更多评论   

2014-03-13 23:06 by okok
谢谢分享,不是很深入,但看完也算基本入门了。谢谢!

# re: Oracle内连接、外连接、右外连接、全外连接小总结  回复  更多评论   

2014-04-08 16:23 by sd
很详细

# re: Oracle内连接、外连接、右外连接、全外连接小总结  回复  更多评论   

2015-03-18 16:40 by nir
很清晰

# re: Oracle内连接、外连接、右外连接、全外连接小总结  回复  更多评论   

2015-03-19 16:30 by 非客
文章不错

# re: Oracle内连接、外连接、右外连接、全外连接小总结  回复  更多评论   

2015-05-26 15:06 by 苗利国
简单易懂 清晰明了

# re: Oracle内连接、外连接、右外连接、全外连接小总结  回复  更多评论   

2015-06-06 16:06 by 111111111
写的让我一下子就懂了

# re: Oracle内连接、外连接、右外连接、全外连接小总结  回复  更多评论   

2015-11-24 13:23 by 小夜酱
受用了

# re: Oracle内连接、外连接、右外连接、全外连接小总结  回复  更多评论   

2016-04-18 17:55 by q
q

只有注册用户登录后才能发表评论。


网站导航: