新手:两个oracle语句的区别?
时间:2011-12-13
来源:互联网
今天看代码发现了一个sql语句的字代码:
1.select *
from ccc.BOND_CODE_CONT b
left join ccc.BOND_RATE_CHAN c
on (b.bond_uni_code = c.bond_uni_code and
c.cur_inte_start_date <= sysdate and c.cur_inte_end_date >= sysdate);
2.select *
from ccc.BOND_CODE_CONT b, ccc.BOND_RATE_CHAN c
where b.bond_uni_code = c.bond_uni_code(+) and
c.cur_inte_start_date <= sysdate and c.cur_inte_end_date >= sysdate;
这两个语句有什么区别?
第一个语句的等价语句是什么??
1.select *
from ccc.BOND_CODE_CONT b
left join ccc.BOND_RATE_CHAN c
on (b.bond_uni_code = c.bond_uni_code and
c.cur_inte_start_date <= sysdate and c.cur_inte_end_date >= sysdate);
2.select *
from ccc.BOND_CODE_CONT b, ccc.BOND_RATE_CHAN c
where b.bond_uni_code = c.bond_uni_code(+) and
c.cur_inte_start_date <= sysdate and c.cur_inte_end_date >= sysdate;
这两个语句有什么区别?
第一个语句的等价语句是什么??
作者: aaa641521 发布时间: 2011-12-13
这两个语句 很大的区别 得到的结果集是不同的
on : 条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录
where 是生成临时表之后再对结果集进行筛选
所以 第一个语句得到的结果集 是返回ccc.BOND_CODE_CONT 这个表的全集的
而第二个语句的结果集 可能被 c.cur_inte_start_date <= sysdate and c.cur_inte_end_date >= sysdate 给筛选掉了
第一个语句的等价语句是:
SQL code
务必要弄清楚 on 与 where 的区别
on : 条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录
where 是生成临时表之后再对结果集进行筛选
所以 第一个语句得到的结果集 是返回ccc.BOND_CODE_CONT 这个表的全集的
而第二个语句的结果集 可能被 c.cur_inte_start_date <= sysdate and c.cur_inte_end_date >= sysdate 给筛选掉了
第一个语句的等价语句是:
SQL code
select * from ccc.BOND_CODE_CONT b left join (select * from ccc.BOND_RATE_CHAN where cur_inte_start_date <= sysdate and cur_inte_end_date >= sysdate) c on b.bond_uni_code = c.bond_uni_code where 1=1;
务必要弄清楚 on 与 where 的区别
作者: lxpbs8851 发布时间: 2011-12-13
举个简单的例子
tab1
id name
1 jack
2 kate
3 lock
tab2
name value
jack 2
kate 3
select * from tab1 left join tab2 on(tab1.name=tab2.name and tabl2.value=2);
这个语句得到的结果集是3条
select * from tab1 left join tab2 on(tab1.name=tab2.name) where tabl2.value=2;
下面的语句得到的结果就只有1条了
tab1
id name
1 jack
2 kate
3 lock
tab2
name value
jack 2
kate 3
select * from tab1 left join tab2 on(tab1.name=tab2.name and tabl2.value=2);
这个语句得到的结果集是3条
select * from tab1 left join tab2 on(tab1.name=tab2.name) where tabl2.value=2;
下面的语句得到的结果就只有1条了
作者: lxpbs8851 发布时间: 2011-12-13
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28