如何使用join(不使用子查询)来跟踪以下代码以获得相同的结果
select a_key from table_a a
inner join table_b b --in my code I've 5 joins like that
on a.a_key=b.a_key
where a_key not in
(select a_key from table_c --and conditions within this brackets also
where var_a beteween table_c.col1 and table_c.col2
or var_b beteween table_c.col1 and table_c.col2
)
答案 0 :(得分:0)
以下基本上是相同的逻辑:
select a_key
from table_a a inner join
table_b b
on a.a_key = b.a_key left join
table_c c
on (var_a between table_c.col1 and table_c.col2 or
var_b between table_c.col1 and table_c.col2
) and
a.a_key = c.a_key
where c.a_key is null;
您应该在列前面加上表别名。列a_key
与您的原始列不明确,var_a
列和var_b
列也不明确。
如果任何匹配的table_c.a_key
值为NULL
,则会略有不同。在这种情况下,join
版本的行为可能更像您期望的那样。