【发布时间】:2013-11-11 11:17:40
【问题描述】:
我访问了许多网站来找到关于哪个更好的答案,ANSI 或非 ANSI 语法。这两个查询有什么区别?
select a.name,a.empno,b.loc
from tab a, tab b
where a.deptno=b.deptno(+);
和:
select a.name,a.empno,b.loc
from tab a
left outer join tab b on a.deptno=b.deptno;
这两种情况的结果是相同的。第二个查询也更长。哪个更好?
假设如果我们在上面的查询中添加了另一个表 Salgrade 基于我们需要加入它们的条件? .. 任何人都可以假设一张桌子并给我解释
【问题讨论】:
-
Oracle recommends to use ANSI joins: "Oracle 建议您使用 FROM 子句 OUTER JOIN 语法而不是 Oracle 连接运算符"
-
如果您有兴趣/计划将当前数据库迁移到 Azure,非 ANSI 样式即将发生重大变化(意味着最新版本的数据库不支持)。在迁移到 Azure 云之前,您必须将所有查询转换为 ANSI 标准。您可以通过搜索数据迁移助手(DMA)查看更多详细信息。