[SQL] 副問い合わせで取得した複数列を条件にレコードを削除する( in )

Pocket

ここでは、副問い合わせで取得した複数列を条件にレコードを削除する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 に書き換えると、削除されます。(-_-;) 

酔っ払い怖い・・・・


アラフォーにして、はじめて複数列で使用できることを知りました。今まで、その必要がなかったということです。か、単に忘れているだけのどちらかです。

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *