java左右连接sql写法_SQL 表连接(内外连接,左右连接及全连接)

None.gifSQL提供了多种类型的连接方式,它们之间的区别在于:从相互交叠的不同数据集合中选择用于连接的行时所采用的方法不同。

None.gif连接类型        定义

None.gif内连接           只连接匹配的行

None.gif左外连接        包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行,a.order_id = b.order_id(+)

None.gif右外连接        包含右边表的全部行(不管左边的表中是否存在与它们匹配的行),以及左边表中全部匹配的行,a.order_id(+) = b.order_id

None.gif全外连接        包含左、右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行。

一、外连接:选出包含其他不匹配的内容。

1、左连接:以左边的数据为基准

1)left join或left outer join

2)条件a=b(+),以a表数据为基准。

SELECT *

FROM TESTA

LEFT OUTER JOIN TESTB

ON TESTA.A=TESTB.A

Oracle 支持另一种写法

SELECT *

FROM TESTA,TESTB

WHERE TESTA.A=TESTB.A(+)

三个表做左外连接

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(+)

2、右连接:以右边的数据为基准

1)right join或right outer join

2)条件a(+)=b,以b表数据为基准。

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

SELECT *

FROM TESTA

RIGHT OUTER JOIN TESTB

ON TESTA.A=TESTB.A

Oracle支持的另一种写法

SELECT *

FROM TESTA,TESTB

WHERE TESTA.A(+)=TESTB.A

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

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

SELECT *

FROM TESTA

FULL OUTER JOIN TESTB

ON TEST A.A=TESTB.A

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

SELECT  TESTA.*,TESTB.*

FROM TEST A

LEFT OUTER JOIN TESTB

ON TEST A.A=TESTB.A

UNION

SELECT TESTA.*,TESTB.*

FROM TESTB

LEFT OUTER JOIN TESTA

ON TEST A.A=TESTB.A

二、内连接:选出两表中相互匹配的记录

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

例1:直接等式

SELECT *

FROM TESTA,TESTB

WHERE TEST A.A=TESTB.A

例2:使用inner join

SELECT *

FROM TEST A  inner join TEST B

on TEST A.A=TEST B.A

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值