【Oracle Database】DELETE文で結合条件を含んだデータの削除方法-SQL文 EXISTS句-

12月 1, 2024

※当ブログではリンク先にプロモーションを含みます。

ORACLE

Oracle Database(オラクルデータベース)で別テーブルから結合(Join)条件を含んだデータ削除方法を知りたい人
Oracle Databaseで結合条件を使用してデータ削除したいがやり方がわからない人向けに書いています。

本記事の内容

Oracle Databaseで結合条件を含んだデータ削除方法

Oracle Databeseで別テーブルからテーブル結合して対象条件のレコードを削除したいと思ったことはありませんか?
私もOracle Databese上でデータ作成後、急遽作成されたデータに不具合があり、別テーブルとテーブル結合して条件に合う対象レコードデータを削除する必要がありました。
しかし、Oracle Databese上での方法が見つけにくかったのでまとめてみました。
Oracle Databaseで結合条件を含んだデータ削除方法を紹介します。

 

Oracle Database(オラクルデータベース)で結合(Join)条件を含んだレコードデータ削除方法

EXISTS句を使用します。
EXISTS句は、「SQLの実行結果が存在するかどうか」を条件としたいときに利用します。
実行結果が存在する場合(TRUEの場合)のみ、SQLを実行することができます。
EXISTS句は、外部結合を併用することができます。
EXISTS句を使用したOracle Databaseで結合条件を含んだデータ削除するSQL文は以下の通りです。

Oracle Databaseで結合条件を含んだデータ削除するためのSQL文

  1. DELETE FROM table1
  2. WHERE EXISTS
  3. (SELECT * FROM table2
  4.   WHERE table2.hinban = table1.hinban
  5.   and table2.kubun = '1'
  6. )
  7. AND table1.yyyymmdd IN (20230101,20230102);


通常、外部結合するには、JOIN句などで結合を記述する必要がありますが、EXISTS句内ではJOIN句を記述せず、上の例のようにすれば外部結合してくれます。
EXISTS句内を先に確認し、存在有無で外側のSQLを実行するかどうか決める流れになります。

table1とtable2に一致するhinban(品番)のkubun(区分)が1のデータを削除対象にしてさらにtable1のyyyymmdd(8桁年月日)が20230101と20230102のレコードを削除するSQL文です。

スポンサーリンク

 

まとめ

Oracle DatabaseでEXISTS句を使用して結合条件を含んだレコードデータ削除方法を紹介しました。
SQL文はOracle DatabaseやSQL Server等データベースによって書き方が変わってきます。
Oracle Databaseの情報があまりないと思いましたのでまとめてみました。
もし使用する機会がありましたら、使用してみてください。
最後までご覧いただき、ありがとうございました。

 

VBAでOracle Databaseに接続する方法【データベース接続】
【Oracle Database Client 12c】インストール途中で停止する解決方法
について紹介していますので、もしよろしければ御覧ください。

データベース|オラクル|Oracle 日本|ホームページ