select col1
from table1
case when @col2 is null then left outer join else join end
table2 on (join condition)
上記は私のクエリです。1つの条件に基づいて左外部結合または右外部結合のどちらかを選択したいと思います。
上記の問題を実装するためのより良い解決策はありますか
select col1
from table1
case when @col2 is null then left outer join else join end
table2 on (join condition)
上記は私のクエリです。1つの条件に基づいて左外部結合または右外部結合のどちらかを選択したいと思います。
上記の問題を実装するためのより良い解決策はありますか
これが実際に説明されている方法で実行できるかどうかはわかりません...私はそれを次のように書きます。したがって、追加の条件に基づいて1つのJOINを短絡します。
select col1
from table1
left outer join table2
on (condition)
and @col2 is null
right outer join table2
on (condition)
and @col2 is not null
select col1
from table1
left outer join
table2 on (join condition)
where @col2 is null or (@col2 is not null and table2.id is not null)
これは、条件から選択するleft outer
かinner join
、条件に基づいて選択します。
この構造を使用します。
select *
from (
select
Key = 1,
-- remainder of left outer join
union all
select
Key=2,
-- remainder of right outer join
) T
where Key = case when (condition) then 1 else 2 end
select col1
from table1 t1 full join table2 t2 on (join condition)
where case when @col2 is null then t2.col1 else t1.col1 end IS NOT NULL
このコードを試すことができます。