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

oracle sql92语法中的右连接简写符号为什么是:(+)=
如下面的sql 
列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门.
SQL code

select d.dname,e.*
from emp e,dept d
where e.deptno(+) = d.deptno



这其中的(+)表示什么意思呢,为什么要这么写,为什么不写成e.deptno =(+) d.deptno呢。

------解决方案--------------------
孩纸,你在还有很长的路要走,不要纠结为什么当初语法设计成这样,你只能理解为它就是这样。

------解决方案--------------------
你记住少的那边需要用(+)就可以了。
------解决方案--------------------
select d.dname,e.*
from emp e,dept d
where e.deptno(+) = d.deptno



emp表中有的deptno ID的数据 而dept 表中却没有
------解决方案--------------------
1 那个少就写上(+),或者?边要全部显示就写 ?jion
2 不推荐用(+),这是oracle 的方言,用 ?jion 符合SQL 规范
------解决方案--------------------
(+)=
right join
=(+)
left join