我一直在移植 oracle selects,并且运行过很多查询,如下所示:
SELECT e.last_name,
d.department_name
FROM employees e,
departments d
WHERE e.department_id(+) = d.department_id;
...and:
SELECT last_name,
d.department_id
FROM employees e,
departments d
WHERE e.department_id = d.department_id(+);
是否有任何用于转换 (+) 语法的所有变体的指南/教程?该语法甚至被称为什么(这样我就可以搜索谷歌)?
更好.. 有没有一个工具/脚本可以为我进行这种转换(首选免费)?某种优化器?我有大约 500 个这样的查询需要移植..
该标准何时被淘汰?任何信息表示赞赏。
The (+)
是 Oracle 特定于 ANSI-92 之前的 OUTER JOIN 语法,因为 ANSI-89 语法不提供以下语法OUTER JOIN
支持。
不管是RIGHT
or LEFT
由符号所附加的表和列引用确定。如果在与第一个表关联的列旁边指定FROM
条款 - 这是一个RIGHT
加入。否则,它是一个LEFT
join. 对于任何需要了解 JOIN 之间差异的人来说,这是一个很好的参考 http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html.
使用 ANSI-92 语法重写的第一个查询:
SELECT e.lastname,
d.department_name
FROM EMPLOYEES e
RIGHT JOIN DEPARTMENTS d ON d.departmentid = e.departmentid
使用 ANSI-92 语法重写的第二个查询:
SELECT e.lastname,
d.department_name
FROM EMPLOYEES e
LEFT JOIN DEPARTMENTS d ON d.departmentid = e.departmentid
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)