変数のデフォルト値をチェックする必要があるシナリオがあります。変数がある場合は、Table2で条件付きでEXISTS部分をチェックする必要があり、デフォルト値がない場合は、Table3で条件付きでEXISTS部分をチェックする必要があります。
以下はサンプルコードです:-
SELECT * FROM tbl1 WHERE EXISTS (SELECT CASE WHEN @boolVar = 0 THEN (SELECT 'X' FROM tbl2 WHERE tbl1.col1 = tbl2.col1) ELSE (SELECT 'X' FROM tbl3 where tbl1.col1 = tbl3.col1) END)
テスト目的の定数を使用したデモクエリ:-
SELECT 1 WHERE EXISTS (SELECT CASE WHEN 1 = 0 THEN (SELECT 'X' WHERE 1=0)
ELSE (SELECT 'X' WHERE 1 = 2) END)
注:-上記のクエリは、単一の条件が満たされていない場合でも、常に1を返します。
OR演算子を同じように使用でき、どのように実現できるかはわかっていますが、両方のテーブルに特定のwhere句を満たす行がない場合でも、Table1からすべての行が返されることを知りたいと思います。
定数値のデモクエリで同じことを説明しようとしました。
助けてください。