日期:2014-05-17  浏览次数:20919 次

"(+)"是什么意思?
菜鸟问   语句中 "(+) "是什么意思?速求!!!

------解决方案--------------------
是联合查询的连接类型
------解决方案--------------------
Select a.* from bsempms a,bsdptms b where a.dpt_no=b.dpt_no(+);

Select a.* from bsempms a,bsdptms b wherea.dpt_no(+)=b.dpt_no;

------解决方案--------------------
Select a.* from bsempms a,bsdptms b where a.dpt_no=b.dpt_no(+);

Select a.* from bsempms a,bsdptms b wherea.dpt_no(+)=b.dpt_no;
外连接,哪边有(+),如果没有的话会加null纪录,
也就是说Select a.* from bsempms a,bsdptms b where a.dpt_no=b.dpt_no(+);
能查出a.dpt_no有b.dpt_no没有的纪录
明白了没?
------解决方案--------------------
外部联接 "+ "的用法

  外部联接 "+ "按其在 "= "的左边或右边分左联接和右联接.若不带 "+ "运算符的表中的一个行不直接匹配于带 "+ "预算符的表中的任何行,则前者的行与后者中的一个空行相匹配并被返回.若二者均不带’+’,则二者中无法匹配的均被返回.利用外部联接 "+ ",可以替代效率十分低下的 not in 运算,大大提高运行速度.例如,下面这条命令执行起来很慢

select a.empno from emp a where a.empno not in

(select empno from emp1 where job=’SALE’);

  倘若利用外部联接,改写命令如下:

select a.empno from emp a ,emp1 b

where a.empno=b.empno(+)

and b.empno is null

and b.job=’SALE’;

  可以发现,运行速度明显提高.