【发布时间】:2023-02-03 19:37:47
【问题描述】:
加入 oracle 时,+ 在列名后面签名是什么意思。
例子 :
select a,d,f,c
From table1, table 2
Where table1.x(+) = table2.y:
【问题讨论】:
加入 oracle 时,+ 在列名后面签名是什么意思。
例子 :
select a,d,f,c
From table1, table 2
Where table1.x(+) = table2.y:
【问题讨论】:
那就是老的甲骨文的外连接操作员。
老的:
SQL> SELECT d.deptno, d.dname, e.ename
2 FROM dept d, emp e
3 WHERE e.deptno (+) = d.deptno
4 ORDER BY d.deptno, e.ename;
DEPTNO DNAME ENAME
---------- -------------- ----------
10 ACCOUNTING CLARK
10 ACCOUNTING KING
10 ACCOUNTING MILLER
20 RESEARCH ADAMS
20 RESEARCH FORD
20 RESEARCH JONES
20 RESEARCH SCOTT
20 RESEARCH SMITH
30 SALES ALLEN
30 SALES BLAKE
30 SALES JAMES
30 SALES MARTIN
30 SALES TURNER
30 SALES WARD
40 OPERATIONS
15 rows selected.
如今,我们这样做
SQL> SELECT d.deptno, d.dname, e.ename
2 FROM dept d LEFT JOIN emp e ON e.deptno = d.deptno
3 ORDER BY d.deptno, e.ename;
DEPTNO DNAME ENAME
---------- -------------- ----------
10 ACCOUNTING CLARK
10 ACCOUNTING KING
10 ACCOUNTING MILLER
20 RESEARCH ADAMS
20 RESEARCH FORD
20 RESEARCH JONES
20 RESEARCH SCOTT
20 RESEARCH SMITH
30 SALES ALLEN
30 SALES BLAKE
30 SALES JAMES
30 SALES MARTIN
30 SALES TURNER
30 SALES WARD
40 OPERATIONS
15 rows selected.
SQL>
【讨论】:
(+) 用于表示外部连接。它放置在表中可能缺少行的一侧。这是我从 Oracle 7 开始就知道的旧 Oracle 语法。目前,甚至 Oracle 也鼓励使用 ANSI 语法进行连接。
【讨论】: