【发布时间】:2015-11-19 09:21:41
【问题描述】:
我在 Oracle 中有一些表。
Table_1 包含:
id|name
1|boy
2|roy
Table_2 包含:
id|value
1|90
2|100
Table_3 包含:
id|class
1|A
2|B
我想加入所有三个表。
查询_1:
SELECT A.ID,A.NAME,B.VALUE,C.CLASS
FROM
TABLE_1 A, TABLE_2 B, TABLE_3 C
WHERE
A.ID=B.ID(+) AND
B.ID=C.ID(+)
或
查询_2:
SELECT A.ID,A.NAME,B.VALUE,C.CLASS
FROM
TABLE_1 A, TABLE_2 B, TABLE_3 C
WHERE
A.ID=B.ID(+) AND
A.ID=C.ID(+)
哪一个是真的?
【问题讨论】:
-
你为什么不试试呢?无论如何,由于您在所有 3 个表中都有相同的 id,因此内部连接也可以正常工作。
-
停止使用 (+)。 1) 这不是 ANSI 投诉 2) 可能难以阅读 3) 您在 SQL 标准中有很好的
OUTER JOIN子句 -
@X.L.Ant :我都尝试过并且成功了。但我不确定我做的是对的:)
-
当然两者都有效,因为所有 id 都存在于任何地方。为什么不做一个简单的内部连接?但正如 @lad2025 所说,无论您选择什么,都使用符合 ANSI 的子句(内连接、左外连接...)
-
@lad2025 : 我会试试 :)