【发布时间】:2012-01-27 23:57:51
【问题描述】:
以下是两个查询。我找不到它是如何工作的。
事实上,第一个查询没有返回任何值,而是第二个查询 返回几行。
select nvl(cdm.dest_id, s.dest_id)
from my_approval s
left join my_alias c
join my_destalias cdm
on c.cust_id = 73 on cdm.alias_id = c.alias_id
and cdm.alias_id = s.dest_id
and s.type = 1;
和
select nvl(cdm.dest_id, s.dest_id)
from my_approval s
left join my_alias c
on c.cust_id = 73
join my_destalias cdm
on cdm.alias_id = c.alias_id
and cdm.alias_id = s.dest_id
and s.type = 1;
【问题讨论】:
-
您能否详细说明您想要实现的目标,描述您的数据集、表格等。我认为虽然问题出在您的连接上,但通常您(大致)在外键上连接一个 id,所以查询 2 会返回一些东西,虽然可能不是你想要的。也许看看this 不确定oracle,但我绝对认为你的加入是错误的。
-
您是否查看过任何一个查询的查询计划?我和@TomIngram 一起说你的连接不完整或不正确。
-
我检查了查询计划,连接没有问题。它执行得很好。由于我在 pl/sql 块中使用了此查询,并且该表是全局临时表,因此我没有表数据。
标签: sql oracle join oracle10g left-join