ORACLE 语句 右连接 疑问
有个语句:
select ......
from ....
where pp.segment_type(+) = 'E'
上面红色是啥意思,怎么跟右连接这么不象阿。
右连接不是右边也要是个表的列名么,这个 'E' 进行右连接,啥意思啊,
不太懂PL/SQL
谢谢。
---下面 右连接,我知道意思,但是上面的 不知道啥意思啊。
数据表的连接有:
1、内连接(自然连接): 只有两个表相匹配的行才能在结果集中出现
2、外连接: 包括
(1)左外连接(左边的表不加限制)
(2)右外连接(右边的表不加限制)
(3)全外连接(左右两表都不加限制)
3、自连接(连接发生在一张基表内)
select a.studentno, a.studentname, b.classname
from students a, classes b
where a.classid(+) = b.classid;
STUDENTNO STUDENTNAM CLASSNAME
---------- ---------- ------------------------------
1 aa 一年级一班
2 bb 一年级二班
一年级三班
以上语句是右连接:
即"(+)"所在位置的另一侧为连接的方向,右连接说明等号右侧的所有记录均会被显示,无论其在左侧是否得到匹配。也就是说上例中,无论会不会出现某个班级没有一个学生的情况,这个班级的名字都会在查询结构中出现。
即"(+)"表示所在的列的值,如果没有匹配的值,则加入null值,并显示出来。.
//通常将全量集合与部分集合连接时,在部分集合的列后面带上(+),以达到没有匹配时,也要显示出一个null的效果。
------解决方案--------------------
这里的(+)无任何意义,加和不加一个样。
右边已经是具体值了,有该值记录就返回之,无该值记录则无返回结果。
------解决方案--------------------select ......
from ....
where pp.segment_type(+) = 'E'
这个右连接和
select ......
from ....
where pp.segment_type = 'E'
貌似没有区别。