Sql 如果值为默认值,则在where子句中使用外部联接

Sql 如果值为默认值,则在where子句中使用外部联接,sql,oracle,oracle11g,where-clause,outer-join,Sql,Oracle,Oracle11g,Where Clause,Outer Join,在where子句usedcolumn\u name(+)=some value中,此列的右外部联接有什么用 Ex: deptno(+)=30 请解释一下 谢谢 例如:部门(+)=30 如果没有任何其他表连接,它将毫无意义 对常量的联接涉及一个联接事件,在该事件中,常量与其中一列进行比较。错误在于,外部连接也必须在常量测试中包含外部连接构造。没有它,联接可能无法完成一行。这是最普遍的外部连接错误编码,因为当作为外部连接的连接事件的一部分考虑时,常量测试的行为与其独立时的行为不同。我已经包含了一个

在where子句used
column\u name(+)=some value
中,此列的右外部联接有什么用

Ex: deptno(+)=30
请解释一下

谢谢

例如:部门(+)=30

如果没有任何其他表连接,它将毫无意义

常量的联接涉及一个联接事件,在该事件中,常量与其中一列进行比较。错误在于,外部连接也必须在常量测试中包含外部连接构造。没有它,联接可能无法完成一行。这是最普遍的外部连接错误编码,因为当作为外部连接的连接事件的一部分考虑时,常量测试的行为与其独立时的行为不同。我已经包含了一个关于这种行为差异的示例,其中包含了两个看似语义等价的查询,它们并不等价,因为一个使用真正的连接,另一个不使用。要点是,外部连接构造只有在实际用于连接时才有意义。正如我们所看到的,解决方案是对缺少的外部连接构造进行编码

您的查询对以下内容有效:

select <column_list>
from   T1, 
       T2
where  T1.C1 = T2.C1(+)
and    T1.C2(+) = ‘Y’; 
选择
从T1开始,
T2
其中T1.C1=T2.C1(+)
T1.C2(+)='Y';