【发布时间】:2015-07-25 19:19:59
【问题描述】:
where子句中使用了column_name(+)=some value,右外连接这个栏目有什么用
Ex: deptno(+)=30
请解释
谢谢
【问题讨论】:
标签: sql oracle oracle11g where-clause outer-join
where子句中使用了column_name(+)=some value,右外连接这个栏目有什么用
Ex: deptno(+)=30
请解释
谢谢
【问题讨论】:
标签: sql oracle oracle11g where-clause outer-join
例如:deptno(+)=30
没有任何其他表连接是没有意义的。
针对常量 的连接涉及一个连接事件,其中一个常量与其中一列进行比较。错误在于 OUTER-JOIN 还必须在常量测试中包含 OUTER-JOIN 构造。没有它,连接可能无法完成一行。这是 OUTER-JOIN 最普遍的错误编码,因为当考虑作为 OUTER-JOIN 的连接事件的一部分时,常量测试的行为与其独立时的行为不同。我已经将这种行为差异的示例包含在两个看似语义上等效的查询中,这些查询并不等效,因为一个使用真正的连接,一个不使用。关键是 OUTER-JOIN 构造仅在它们实际用于连接时才有意义。正如我们所见,解决方案是对缺少的 OUTER-JOIN 结构进行编码。
见Common errors seen when using OUTER-JOIN
您的查询对以下内容有效:
select <column_list>
from T1,
T2
where T1.C1 = T2.C1(+)
and T1.C2(+) = ‘Y’;
【讨论】: