例えば、以下のようなテーブルがあるとします。
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文が実行されません。