Oracle左连接,右连接,全外连接和+号的用法
左外连接 left outer join/left join
LEFT JOIN是以左表的记录为基础的,示例中t_A可以看成左表,t_B可以看成右表,它的结果集是t_A表中的全部数据,再加上t_A表和t_B表匹配后的数据。换句话说,左表(t_A)的记录将会全部表示出来,而右表(t_B)只会显示符合搜索条件的记录。t_B表记录不足的地方均为NULL。
示例:select * from t_A a left join t_B b on a.id = b.id; 或 select * from t_A a left outer join t_B b on a.id = b.id;
test:
SELECT S.S#,SN,C#,G
from S left join SC
on S.S#=SC.S#;
S# SN C# G
1 S1 A C2 A
2 S1 A C1 A
3 S2 B C2 C
4 S2 B C4 C
5 S2 B C1 B
6 S3 C
7 S4 D
用(+)来实现, 这个+号可以这样来理解: + 表示补充,即哪个表有加号,这个表就是匹配表。如果加号写在右表,左表就是全部显示,所以是左连接。
select S.S#,SN,C#,G
from S,SC
where S.S#=SC.S#(+);
S# SN C# G
1 S1 A C2 A
2 S1 A C1 A
3 S2 B C2 C
4 S2 B C4 C
5 S2 B C1 B
6 S3 C
7 S4 D
右外连接 right outer join/right join
和LEFT JOIN的结果刚好相反,是以右表(t_B)为基础的。它的结果集是t_B表所有记录,再加上t_A和t_B匹配后的数据。 t_A表记录不足的地方均为NULL。
示例:select * from t_A a right join t_B b on a.id = b.id;
或
select * from t_A a right outer join t_B b on a.id = b.id;
test:
select S.S#,SN,C#,G
from S right join SC
on S.S#=SC.S#;
S# SN C# G
1 S1 A C2 A
2 S1 A C1 A
3 S2 B C4 C
4 S2 B C2 C
5 S2 B C1 B
用(+)来实现, 这个+号可以这样来理解: + 表示补充,即哪个表有加号,这个表就是匹配表。如果加号写在左表,右表就是全部显示,所以是右连接
test:
select S.S#,SN,C#,G
from S,SC
where S.S#(+)=SC.S#;
S# SN C# G
1 S1 A C2 A
2 S1 A C1 A
3 S2 B C4 C
4 S2 B C2 C
5 S2 B C1 B
全外连接 full outer join/full join
左表和右表都不做限制,所有的记录都显示,两表不足的地方均为NULL。 全外连接不支持(+)写法。
示例: select * from t_A a full join t_B b on a.id = b.id; 或 select * from t_A a full outer join t_B b on a.id = b.id;
posted on 2017-11-21 15:54 John_Baker 阅读(1185) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南