我有一个复杂的非 ansi 查询,我需要在 ansi 查询中进行转换。
所以我会举一个小例子来描述我的问题
输入查询
SELECT a.name,
a.empno,
b.loc,
c.inr
FROM a,
b,
c
WHERE a.deptno = b.deptno(+)
AND b.empno(+) = 190
a.deptno = c.deptno(+)
AND c.empno(+) = 190;
提前致谢
最佳答案
您的查询等效于以下符合 ANSI 标准的查询:
SELECT a.name,
a.empno,
b.loc,
c.inr
FROM tab a
LEFT JOIN tab b ON a.deptno = b.deptno AND b.empno = 190
LEFT JOIN tab c ON a.deptno = c.deptno AND c.empno = 190;
您必须将谓词
b.empno = 190
和 c.empno = 190
放在 ON
操作的 LEFT JOIN
子句中,否则 LEFT JOIN
将成为 INNER JOIN
。关于oracle - 将 Oracle 旧外连接转换为 Ansi SQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40782925/