AccessのSQLで NOT EXISTと同様のことするには?

 

例えば、以下のようなテーブルがあるとします。

ID  Name
1   John
2   Mary
3   Peter

 

このテーブルから、IDが2の行を削除するために、以下のようなSQL文を使用できます。

DELETE FROM テーブル1
WHERE ID = 2

 

しかしながら、IDが2の行が存在しない場合、このSQL文を実行するとエラーが発生します。そこで、IDが2の行が存在する場合にのみ削除するように、NOT EXISTS句を使用することができます。

DELETE FROM テーブル1
WHERE ID = 2 AND NOT EXISTS (
  SELECT * FROM テーブル1 WHERE ID = 2
)

このSQL文では、サブクエリを使用して、IDが2の行が存在しない場合にのみ、DELETE文が実行されます。サブクエリで、IDが2の行が存在するかどうかを確認しています。

IDが2の行が存在しない場合、NOT EXISTS句がTRUEを返し、WHERE句が成立してDELETE文が実行されます。

逆に、IDが2の行が存在する場合、NOT EXISTS句がFALSEを返し、WHERE句が成立せず、DELETE文が実行されません。

タイトルとURLをコピーしました