【发布时间】:2018-04-20 09:52:17
【问题描述】:
我想用 where 子句在 2 条件下从表中选择一些值。
select a.value1
b.value2
c.value3
from a,b,c
where
a.header_id = b.header_id
and b.line_id = c.line_id(+)
如果 c.line_id 不为空,我有更多类似的 where 子句
c.active = 'Y'
c.active_date > sysdate
任何想法,如何使这个声明有效?
【问题讨论】:
-
这看起来像 Oracle 代码。我们可以删除 Postgres 标记吗?
-
sry,我想标记 plsql。
-
你能用现代语法重写你的查询吗? 删除
FROM子句中的逗号并使用显式连接。 -
(+)oooooh...我记得从 90 年代初开始!请转成outer join-- 眼睛疼。 -
原始查询中
(+)的目的是创建一个外连接(在古老的神秘语法中)任何引用表c的后续谓词必须也有(+),例如c.active(+) = 'Y'或(更好)使用更具可读性的现代语法,如下所示。