我一直在使用 JOINS,但今天我看到一个简单的代码是这样的:
SELECT Name FROM customers c, orders d WHERE c.ID=d.ID
这只是旧方法吗?
没有区别,使用该方法或执行计划将相同JOIN
这两个查询在语义上是相同的。通过连接,可以在 JOIN 或 WHERE 子句中指定谓词。
仅进行内部连接时,隐式样式和 ANSI 连接之间没有太大区别。可能没有区别,因为数据库会以相同的方式执行它们。
但它很快就会变得复杂,至少当您被允许执行隐式外部连接时。加入可以做的一些事情是你不能用旧方法做的。我相信下面的语句不能用隐式连接来表达(取自下面的链接)。
SELECT *
FROM T1 LEFT OUTER JOIN T2
ON (T1.SOME_VALUE = 11 and T1.ID = T2.ID)
WHERE T1.OTEHR_VALUE > 3;
阅读此内容以获取更多信息。
关于 ANSI 外连接和 Oracle 外连接语法之间的等效性似乎有些混淆。下面的例子解释了这两种语法的等价和不等价。