【问题标题】:use of outer joins in where clause if the value is defaulted如果值为默认值,则在 where 子句中使用外连接
【发布时间】:2015-07-25 19:19:59
【问题描述】:

where子句中使用了column_name(+)=some value右外连接这个栏目有什么用

Ex: deptno(+)=30

请解释

谢谢

【问题讨论】:

    标签: sql oracle oracle11g where-clause outer-join


    【解决方案1】:

    例如: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’; 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-20
      • 1970-01-01
      • 2016-11-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多