【问题标题】:(+) operator in an oracle query [duplicate]oracle查询中的(+)运算符[重复]
【发布时间】:2013-10-11 10:18:02
【问题描述】:

查询如下

select tbl1.x, tbl2.y
  from
tbl1, tbl2
  where tbl1.some_column (+) = tbl2.some_column
  AND tbl1.some_column2 (+) = 'Y'

让我困惑的是这部分

 AND tbl1.some_column2 (+) = 'Y'

这是什么意思??如果我删除 (+) 查询返回完全不同的行数。我确实了解当 = 两侧有列名时 (+) 的应用,但是当 = 的一侧有字符串时 (+) 会做什么?

【问题讨论】:

  • 那个问题没有让我明白第二个条件

标签: sql oracle


【解决方案1】:

这是 Oracle 在 LEFT OUTER JOIN(或者,在这种情况下,可能是 RIGHT OUTER JOIN)之前的旧语法。

在现代 Oracle 中不再需要使用它(至少从 9i 开始,甚至可能是 8i)。

现在您可以使用标准 SQL 连接语法:

SELECT tbl1.x, tbl2.y
FROM tbl1 RIGHT OUTER JOIN tbl2 
ON ( tbl1.some_column = tbl2.some_column AND tbl1.some_column2 = 'Y')

【讨论】:

  • 有没有办法在不显式命名连接的情况下实现此条件,即使用逗号列出表并随后使用 where 子句?
  • @Dennis - 是的,这正是你的帖子中的查询所做的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-11
  • 1970-01-01
  • 2016-11-16
  • 2013-05-28
  • 2019-12-03
  • 2021-10-14
相关资源
最近更新 更多