oracle中各种连接事例,left join、right join、full join

A表

  

B表

 

复制代码

--内连接 把匹配的信息全部查出来
select * from t_wdx_a a inner join t_wdx_b b on a.id = b.id; 

 

--左连接 包含左边表所有记录,右边所有的匹配的记录,如果没有则用空补齐(简写的时候+在右边)
select * from t_wdx_a a left join t_wdx_b b on a.id = b.id;
select * from t_wdx_a a left outer join t_wdx_b b on a.id = b.id;
select * from t_wdx_a a,t_wdx_b b where a.id = b.id(+);

 

--right join 右连接 包括右边表所有记录,匹配左边表的记录,如果没有则以空补齐(简写的时候+在左边)
select * from t_wdx_a a right join t_wdx_b b on a.id = b.id;
select * from t_wdx_a a, t_wdx_b b where a.id(+) = b.id;

 

--full join  全连接 意思是左右表所有的记录全部显示出来
select * from t_wdx_a a full join t_wdx_b b on a.id = b.id;

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle LEFT JOINRIGHT JOIN 和 INNER JOIN 是用来结合两个或多个表的数据的 SQL 查询。它们的区别在于,LEFT JOIN 返回左表的所有行以及与右表匹配的行,如果右表没有匹配的行,则返回空值。RIGHT JOIN 返回右表的所有行以及与左表匹配的行,如果左表没有匹配的行,则返回空值。INNER JOIN 只返回左右表都匹配的行。 具体来说,如果我们有两个表A和B,其A有n行,B有m行,LEFT JOIN 返回的结果集会包含A表所有的n行和B表匹配的m行,如果B表没有匹配的行,则返回NULL。而 RIGHT JOIN 返回的结果集会包含B表所有的m行和A表匹配的n行,如果A表没有匹配的行,则返回NULL。INNER JOIN 只返回A和B表都匹配的行,如果A表和B表都没有匹配的行,则结果集为空。 例如,如果我们有两个表A和B,其A包含以下数据: | id | name | |----|------| | 1 | Tom | | 2 | Jack | | 3 | Mary | B表包含以下数据: | id | age | |----|-----| | 1 | 20 | | 3 | 25 | | 4 | 30 | LEFT JOIN A 和 B 表的结果集如下: | id | name | age | |----|------|-----| | 1 | Tom | 20 | | 2 | Jack | NULL | | 3 | Mary | 25 | RIGHT JOIN A 和 B 表的结果集如下: | id | name | age | |----|------|-----| | 1 | Tom | 20 | | 3 | Mary | 25 | | 4 | NULL | 30 | INNER JOIN A 和 B 表的结果集如下: | id | name | age | |----|------|-----| | 1 | Tom | 20 | | 3 | Mary | 25 | 因此,LEFT JOIN 会返回左表所有的行,RIGHT JOIN 会返回右表所有的行,INNER JOIN 只返回左右表都匹配的行。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值