昔調べて書いてあるサイトを見つけたきがするけど、見つからないのでメモ書き
select
*
from TestTable
where key in (select key from TestTable where col1 > 100)
この形式で複数件をINできる・・・んだけど、件数0件のときはNULLでIN検索するため0件検索される。
0件のとき全件検索をしたい場合は
select
*
from TestTable1
where 1 = case when (select count(key) from TestTable where col1 > 100) = 0 then 1
when key in (select key from TestTable where col1 > 100) then 1
else 0 end
つまり、0件なら問答無用で正しい条件、1件以上あればデータがあるときのみ正しい条件となるようにCase式でWhere条件を記載する
もうちょっとスマートなやり方もありそうだけど・・・