当使用(+)操作符执行外连接时,如果在where子句中包含有多个条件,则必须在所有条件中都包含(+)操作符这句话是不是不正确啊, 好想只要连接字段的条件加(+)操作符就可以了吧select a.dname,b.ename from dept a,emp b where a.deptno=b.deptno(+) and b.deptno(+)=10
and 等等,都要用(+)操作符吗,我看我们的项目中,好多语句都只是连接字段中使用(+),其他的条件都没有写,会不会有错误啊我在这里就讨论这个问题,不是讨论用不用(+)的问题, oracle 9i开始就建议使用outer join执行外连接
and 等等,都要用(+)操作符吗,我看我们的项目中,好多语句都只是连接字段中使用(+),其他的条件都没有写,会不会有错误啊我在这里就讨论这个问题,不是讨论用不用(+)的问题, oracle 9i开始就建议使用outer join执行外连接
解决方案 »
- oracle中想把一张表的几条记录整合成一条记录放到另一张表的一个字段中,如何用存储过程实现
- PowerCenter 客户端有没web service 组件,求指点
- 办公流程启动不了,必须得重启Oracle服务
- 怎么样用一句SQL语句实现?
- 很诡异的不能建表,紧急求助高手
- 关于oracle enterprise manager console登录的问题
- 请问如何在存储过程中调用其它的存储过程?
- 无法在服务里启动ManagementServer
- 急急!!有关imp80导入命令的错误!!!
- Oracle数据库安装完成后用PL/Sql连接时提示需要客户端,请问,如何此时如何安装客户端更为合适?
- 若是通过web服务器连到oracle上的,该如何验证oracle的连接状况?
- 倒计时提示
create table t1(id varchar2(50),name varchar2(50));
create table t2(id varchar2(50),name varchar2(50));
insert into t1 values ('1','a');
insert into t1 values ('2','b');
insert into t1 values ('3','c');
insert into t2 values ('1','d');
insert into t2 values ('4','f');
select * from t1,t2 where t1.id=t2.id(+) and t2.name='d' --t2.name 不加(+)
ID NAME ID NAME
----------------------------------- --
1 a 1 dselect * from t1,t2 where t1.id=t2.id(+) and t2.name(+)='d' --t2.name 加(+)
ID NAME ID NAME
---------------- ---------------------
1 a 1 d
3 c
2 b
像这种的b表每个字段都要加(+)的,因为如果不加的话相当于对b表直接过滤了,那就跟全没加(+)号一样了,变成了等值连接,不等值的b表行全抛弃。
如果其他条件是针对从表的,那应该加(+)
就相当于
select * from t1,t2 where t1.id=t2.id(+) and t2.name='d' --t2.name 不加(+)
同
select * from t1
left join t2 on t1.id=t2.id
where t2.name='d' select * from t1,t2 where t1.id=t2.id(+) and t2.name(+)='d' --t2.name 加(+)
同
select * from t1
left join t2 on t1.id=t2.id and t2.name='d' 不过个人坚决反对使用(+)
更BS那些对(+)都没我了解的新人
老是模仿老手们的写法
还以为自己懂得高效率