- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複雑な削除SQLを組んだことがある方いらっしゃいますか?)
複雑な削除SQLについての質問
このQ&Aのポイント
- データベースの削除処理に関する質問です。
- 主テーブルと明細テーブルの関係性を考慮した削除方法を教えてください。
- 照合キーを使用して主テーブルと明細テーブルのデータを一括削除する方法を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
DB種がわからなので、きちんと動くかどうか保障できませんが、、 ↓削除対象の明細テーブル select * from 明細テーブル where exists ( select * from 主テーブル where [削除サイン] = 'D' and 主テーブル.[No.1] = 明細テーブル.[No.1] and 主テーブル.[No.2] = 明細テーブル.[No.2] and 主テーブル.[No.3] = 明細テーブル.[No.3] and 主テーブル.[更新日付] = 明細テーブル.[更新日付] ) それを改造し ↓明細テーブルの削除を実行 delete from 明細テーブル where exists ( select * from 主テーブル where [削除サイン] = 'D' and 主テーブル.[No.1] = 明細テーブル.[No.1] and 主テーブル.[No.2] = 明細テーブル.[No.2] and 主テーブル.[No.3] = 明細テーブル.[No.3] and 主テーブル.[更新日付] = 明細テーブル.[更新日付] ) っていか、、、[主]と[明細]っていう構成なら、、、 「親を持たない明細は存在しない」というルールを持たせてもよいのであれば、 「連鎖更新」 「連鎖削除」 を利用した、リレーショナルを利用するというのも一つの手です。
お礼
はじめまして、こんばんは。 教えていただきました内容で希望通りの機能をしてくれました。「連鎖削除」というのも調べてみます。 お礼遅れましてすみません。おかげさまで大変助かりました。ありがとうございました。