0

在 Oracle 上工作:我正在尝试使用 where 子句进行内部自联接,然后获取该结果并对其进行左外部联接:

(select * from table1 A
inner join
select * from table1 B
on A.id = B.id
where
A.id is not null and B.id is not null) C
left outer join
select * from table2 D
on C.id = D.id

不知何故,我在语法上受到挑战,无法完成这项工作。似乎无法在任何地方找到正确的语法。

4

2 回答 2

1

只需将 where 子句放在末尾即可。数据库会正确处理:

select * 
from table1 A
inner join table1 B on A.id = B.id
left join table2 D on D.id = A.id
where A.id is not null

在这种情况下,我们可以利用 id 列连接和 where 子句的逻辑传递属性

于 2013-10-10T20:53:23.863 回答
0

您的第二个联接需要加入到查询中,在开头添加一个select * from

select * from (select * from table1 A
inner join
select * from table1 B
on A.id = B.id
where
A.id is not null and B.id is not null) C
left outer join
select * from table2 D
on C.id = D.id
于 2013-10-10T20:54:10.887 回答