MYSQLでの利用です。
tabel1とtable2が存在しています。
table1とtable2はidで外部キー設定されており、次のようなカラムが設定されています
table1 ・id ・name table2 ・id ・table1_id
このような状態で誤ってtable1に重複データ(nameが一意が正)が混入してしまいました。
table1 id name 1 test 2 test table2 id table1_id 1 1 2 2
table2のtable1_idを最も若いidに変換し、table1の重複データ中idが最も若いものだけ残し他の物を削除(この場合、id2)したいと考えております。その場合のUPDATE文に悩んでいます。ご教授いただけないでしょうか。手作業での作業はレコード数が実際は10万単位で存在しているため難しいと感じております。またテーブル1への重複データ混入の原因については修正が完了しています。
table2については削除ではなく更新をしたいです。(実際には他様々なデータを含んでいるため。)他様々なテーブルと連結されているため、移行テーブルを作成し、、、 などの手段は難しいと考えております。
table1のレコード削除は次の文で良いかと考えています。
sql
1delete from table1 2where 3 (id, name) not in ( 4 select 5 tmp1.id as id, 6 tmp1.name as name 7 from 8 ( 9 select 10 min(id) as id, 11 name 12 from 13 table1 14 group by 15 name 16 ) as tmp1 17 ) 18
上記SQLを実行する前にtable2のtable1_idを更新しなければなりませんが、どのように更新したらよいでしょうか。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/05 04:10 編集
2020/10/05 04:11 編集
2020/10/05 04:11
2020/10/05 04:14
2020/10/05 04:18
2020/10/05 05:03
2020/10/05 05:46