ここでは、副問い合わせで取得した複数列を条件にレコードを削除するSQLのサンプルを掲載しています。なお、削除だけでなく抽出することもできますので、削除限定の書き方というわけではありません。
スポンサーリンク
in 演算子を使う
通常(?)、in 演算子は次のように使うことができます。
select col1 from table1 where col3 in ('リンゴ', 'ゴリラ', 'ランボー')
そこで、上記SQL文で、リテラルで指定した条件部分を副問い合わせにします。また、その副問い合わせは複数列を取得し、次のように記述することができます。
select * from table1 where (col3, col4) in ( select col3, col4 table2 where col5 = 'init' )
上記のように、in 演算子は複数列でも使用できます。あ、タイトルでレコードを削除すると書いておきながら、抽出していました。(-_-;) 上記も delete from に書き換えると、削除されます。(-_-;)
酔っ払い怖い・・・・
アラフォーにして、はじめて複数列で使用できることを知りました。今まで、その必要がなかったということです。か、単に忘れているだけのどちらかです。