(+)就是连接
譬如
SELECT a.*, b.* from a(+) = b就是一个右连接,等同于select a.*, b.* from a right join b
SELECT a.*, b.* from a = b(+)就是一个左连接,等同于select a.*, b.* from a left join b
即" (+)"所在位置的另一侧为连接的方向,通常将全量集合与部分集合连接时,在部分集合的列后面带上(+),以达到没有匹配时,也要显示出一个null的效果
SELECT
A.id, B.IDD
FROM
A, B
WHERE
A.id(+)=B.IDD
等价于
SELECT
A.id, B.IDD
FROM
A RIGHT OUTER JOIN B ON ( A.id=B.IDD)
SQL> select * from A;
ID VAL
---------- ----------
1 A1
2 A2
SQL> select * from B;
IDD VAL
---------- ----------
1 B1
3 B3
SQL> SELECT
2 A.id, B.IDD
3 FROM
4 A, B
5 WHERE
6 A.id(+)=B.IDD;
ID IDD
---------- ----------
1 1
3
SQL> SELECT
2 A.id, B.IDD
3 FROM
4 A RIGHT OUTER JOIN B ON ( A.id=B.IDD);
ID IDD
---------- ----------
1 1
3
意思是 两表关联的时候,
B 表的数据, 全部检索出来。
譬如
SELECT a.*, b.* from a(+) = b就是一个右连接,等同于select a.*, b.* from a right join b
SELECT a.*, b.* from a = b(+)就是一个左连接,等同于select a.*, b.* from a left join b
即" (+)"所在位置的另一侧为连接的方向,通常将全量集合与部分集合连接时,在部分集合的列后面带上(+),以达到没有匹配时,也要显示出一个null的效果
SELECT
A.id, B.IDD
FROM
A, B
WHERE
A.id(+)=B.IDD
等价于
SELECT
A.id, B.IDD
FROM
A RIGHT OUTER JOIN B ON ( A.id=B.IDD)
SQL> select * from A;
ID VAL
---------- ----------
1 A1
2 A2
SQL> select * from B;
IDD VAL
---------- ----------
1 B1
3 B3
SQL> SELECT
2 A.id, B.IDD
3 FROM
4 A, B
5 WHERE
6 A.id(+)=B.IDD;
ID IDD
---------- ----------
1 1
3
SQL> SELECT
2 A.id, B.IDD
3 FROM
4 A RIGHT OUTER JOIN B ON ( A.id=B.IDD);
ID IDD
---------- ----------
1 1
3
意思是 两表关联的时候,
B 表的数据, 全部检索出来。
A表的数据,则是在B表有相对应的数据的情况下,才检索出来。