oracle join连接方法以及left join中on 和where的区别
来源:互联网 发布:lol体验服刷点卷软件 编辑:程序博客网 时间:2024/05/22 04:50
1.join连接方法分类:
(1)自连接:inner join,join (只返回两张表连接列的匹配项,没有空值代替这一说)
以下三种查询结果一样:
select * from mz_cfzb a inner join mz_cfmxb on a.id=b.zb_id;
select * from mz_cfzb a inner join mz_cfmxb on a.id=b.zb_id;
select * from mz_cfzb a,mz_cfmx b wherea.id=b.zb_id;
(2)笛卡尔乘积:cross join (不加任何条件,达到M*N的结果集,如果笛卡尔乘积加上连接条件和自连接一样的结果)
以下两种查询结果一样:
select * from mz_cfzb a cross join mz_cfmxb;
select * from mz_cfzb a, mz_cfmx b;
(3)左外连接:left join (列出左边表的全部及右边表符合条件的,不符合条件的以空值代替)
(在(+)计算时,哪个带(+)哪个需要条件符合的,另一个全部的。即放左即右连接,放右即左连接)
以下两种查询结果一样:
select * from mz_cfzb a left join mz_cfmx bon a.id=b.zb_id;
select * from mz_cfzb a,mz_cfmx b wherea.id=b.zb_id(+);
(4)右外连接:right join (列出右边表的全部及左边表符合条件的,不符合条件的以空值代替)
以下两种查询结果一样:
select * from mz_cfzb a right join mz_cfmxb on a.id=b.zb_id;
select * from mz_cfzb a,mz_cfmx b wherea.id(+)=b.zb_id;
(5)全连接:full join (产生M+N的结果集,列出两表全部的,不符合条件的以空值代替)
select * from mz_cfzb a full join mz_cfmx bon a.id=b.zb_id;
2.left join中on与where的区别:
select a.*,b.* from A a left join B b ona.id=b.id;
和
select a.*,b.* from A a left join B b ona.id=b.id where b.name=’c’;
第一个SQL,如果B表中没有符合条件的数据,因为是left join,所以查询的结果相当于是select a.* from A a。
第二个SQL,条件在where中,如果B表中没有符合条件的数据,查询的结果就是为空。left join也就失去了意义。希望能够帮到你。
在使用left jion时,on和where条件的区别如下:
(1) on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
(2) where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。
如果有where条件,顺序是on 后where,如果要使用where条件可以用and代替。
select a.*,b.* from A a left join B b ona.id=b.id and b.name=’c’;
- oracle join连接方法以及left join中on 和where的区别
- oracle中left join中on和where的区别
- oracle中left join中on和where的区别
- Oracle的left join中on和where的区别
- Oracle的left join中on和where的区别
- Oracle的left join中on和where的区别
- Oracle的left join中on和where的区别
- Oracle的left join中on和where的区别
- Oracle的left join中on和where的区别
- Oracle的left join中on和where的区别
- Oracle的left join中on和where的区别以及与(+)的区别
- [转载]SQL语句中LEFT JOIN ON WHERE和LEFT JOIN ON AND的区别
- Mysql中left join on and和left join on where 的区别
- oracle--left join and 和left join where的区别
- oracle--left join and 和left join where的区别
- oracle--left join and 和left join where的区别
- oracle--left join and 和left join where的区别
- left join中on和where的区别是什么
- 小白学习Python遇到的一些2.7与3.X之间的不同问题
- 字符串查询功能 patindex与charindex的区别
- mobile net 的 depthwise conv 和 origin conv 的对比
- OpenStack Tacker介绍
- 查询光猫厂家为ZTE,且内存范围在0到100之间,统计去掉重复的loid之后的数量,并计算出内存的avg,max,min,sum
- oracle join连接方法以及left join中on 和where的区别
- Python和PyCharm的安装
- iperf网络性能测试工具
- 交错01串
- C语言基础知识学习(三)
- 你知道 GNU Binutils 吗?
- 欢迎使用CSDN-markdown编辑器
- SQL Server的复合索引学习
- C语言基础知识学习(数组)