oracle中各种连接示例 left join 、right join、 full join等

A表

 B表

1. --内连接 把匹配的信息全部查出来

select * from A a inner join B b on a.id = b.id;

获取A表和B表中id相对应的数据(仅显示id对应的匹配数据)

 

2. --左连接 包含左边表所有记录,右边所有的匹配的记录,如果没有则用空补齐(简写的时候+在右边)(三种写法都可以)

select * from A a left join B b on a.id = b.id;

select * from A a left outer join B b on a.id = b.id;

select * from A a,B b where a.id = b.id(+);

(查询A表所有数据,查询B表符合条件数据,,如果没有使用空补齐,如果B表数据多,删除不匹配数据)

(A表数据多,B表数据少)

(A表在左,B表在右)

将A、B表互换位置

(A表数据多,B表数据少)

(B表在左,A表在右)

select * from B b left join A a on a.ID = b.ID;

(查询B表所有数据,查询A表符合条件数据,如果没有使用空补齐,如果A表数据多,删除不匹配数据)

3. --right join 右连接 包括右边表所有记录,匹配左边表的记录,如果没有则以空补齐(简写的时候+在左边)(两种写法)

select * from A a right join B b on a.id = b.id;

select * from A a, B b where a.id(+) = b.id;

(A表数据多,B表数据少)

(A表在左,B表在右)

(查询B表所有数据,查询A表符合条件数据,如果没有使用空补齐,如果A表数据多,删除不匹配数据)

 

select * from B b right join A a on a.ID = b.ID;

(A表数据多,B表数据少)

(B表在左,A表在右)

(查询A表所有数据,查询B表符合条件数据,,如果没有使用空补齐,如果B表数据多,删除不匹配数据)

从结果看来:

select * from A a left join B b on a.id = b.id;

select * from B b right join A a on a.ID = b.ID;

查询结果结构相同,但是A、B表的顺序不同

 

select * from B b left join A a on a.ID = b.ID;

select * from A a right join B b on a.id = b.id;

查询结果结构相同,但是A、B表的顺序不同

 

4. --full join  全连接 意思是左右表所有的记录全部显示出来

select * from A a full join B b on a.id = b.id;

select * from B b full join A a on a.id = b.id;

 

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值