質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

DB2

DB2(IBM Database2)は、IBMのリレーショナルデータベース管理システム製品です。 UNIXとWindows、IBM社のメインフレームOS用が用意されており、 幅広いプラットフォームに対応しています。

Q&A

1回答

1693閲覧

MERGE INTO内でのDELETE

axios

総合スコア5

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

DB2

DB2(IBM Database2)は、IBMのリレーショナルデータベース管理システム製品です。 UNIXとWindows、IBM社のメインフレームOS用が用意されており、 幅広いプラットフォームに対応しています。

0グッド

1クリップ

投稿2020/04/08 11:59

編集2022/01/12 10:55

DB2 V9.7を使用しています。
TABLE2とTABLE3が結合できた場合、TABLE2のUSER_IDがTABLE1に存在しなければ
TABLE1にINSERTをしています。
INSERTが行えたTABLE2はDELETEしたいのですが処理方法が分かりません。
SQL文が複数になっても構いませんので、よろしくお願い致します。

MERGE INTO TABLE1 AS T1 USING(SELECT T2.USER_ID FROM TABLE2 AS T2 INNER JOIN TABLE3 AS T3 ON T2.USER_ID = T3.USER_ID AND T3.WORKPLACE = '01') ON T1.USER_ID = T2.USER_ID WHEN NOT MATCHED THEN INSERT(T1.USER_ID, T1.USER_NAME, T1.WORKPLACE) VALUES(T2.USER_ID, T2.USER_NAME, T3.WORKPLACE)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

axios

2020/04/08 22:32

ありがとうございます。 追加しました。
axios

2020/04/09 03:43

ありがとうございます。 USER_IDがTABLE1に存在しない場合はINSERTを行い、TABLE2を処理済として削除するのですが、USER_IDがTABLE1に存在する場合はTABLE2を削除したくないため、INSERTが行えたUSER_IDを一旦どこかに格納しておく必要があるような気がしますが、その部分に悩んでいます。
guest

回答1

0

insertのみなのに、なぜMERGEで行っているのか分かりませんけど、MERGEのターゲットのテーブルとは別なテーブルに対するDELETEなので、別なSQLで行う必要があります。

SQL

1DELETE FROM TABLE2 T2 2WHERE USER_ID IN (SELECT USER_ID FROM TABLE3 WHERE WORKPLACE = '01') 3 AND Exists(select 1 from TABLE1 where USER_ID=T2.USER_ID)

※insertされた後という前提であれば、Existsの部分は不要だと思いますが、念のため。

投稿2020/04/08 15:52

sazi

総合スコア25138

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問