【Oracle Database】DELETE文で結合条件を含んだデータの削除方法-SQL文 EXISTS句-
Oracle Database(オラクルデータベース)で別テーブルから結合(Join)条件を含んだデータ削除方法を知りたい人
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文
- DELETE FROM table1
- WHERE EXISTS
- (SELECT * FROM table2
- WHERE table2.hinban = table1.hinban
- and table2.kubun = '1'
- )
- 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】インストール途中で停止する解決方法
について紹介していますので、もしよろしければ御覧ください。
最近のコメント