トップ回答者
SQLServer でのデータの削除方法を教えてください。

質問
-
お世話になります。
テーブルが2つ(Tab1, Tab2)存在します。
Tab1 には DK, GK, WKP, WGP, WSP が含まれており
SELECT * FROM Tab1 WHERE WKP=6 AND WGP= 7 AND WSP= 2
で取得できたデータで
Tabl2 には DK, GK が含まれています。
Tab1 で取得したデータの DK,GKのそれぞれに一致するデータを
削除したい場合プログラム内に取得データを取得し、
ループ処理を使ってデータを削除するDELETE Tab2 WHERE DK=@DK AND GK=@GK
で削除していく方法しかないのでしょうか?
できればこれらの処理をサーバーで一括で処理を行いたいのですが。
理由は処理時間の短縮なのですが、短縮できるでしょうか?
回答
-
以下で良いと思いますよ。念のため、実行前にバックアップを取るなどして下さい。空で書いていますので、動作確認をしていません。すみません。
delete from Tab2
inner join Tab1 on Tab1.DK = Tab2.DK and Tab1.GK = Tab2.GK
where Tab1.WKP=6 AND Tab1.WGP= 7 AND Tab1.WSP= 2(追記)
galacoさんの書き込みで気が付きました。削除したいのはTab2ですね。
修正しました。
★良い回答には回答済みマークを付けよう! MVP - .NET http://d.hatena.ne.jp/trapemiya/
- 編集済み trapemiya 2016年6月7日 1:27 SQL修正
- 回答の候補に設定 kogesakaMVP 2016年6月9日 3:37
- 回答としてマーク 星 睦美 2016年6月30日 7:59
すべての返信
-
以下で良いと思いますよ。念のため、実行前にバックアップを取るなどして下さい。空で書いていますので、動作確認をしていません。すみません。
delete from Tab2
inner join Tab1 on Tab1.DK = Tab2.DK and Tab1.GK = Tab2.GK
where Tab1.WKP=6 AND Tab1.WGP= 7 AND Tab1.WSP= 2(追記)
galacoさんの書き込みで気が付きました。削除したいのはTab2ですね。
修正しました。
★良い回答には回答済みマークを付けよう! MVP - .NET http://d.hatena.ne.jp/trapemiya/
- 編集済み trapemiya 2016年6月7日 1:27 SQL修正
- 回答の候補に設定 kogesakaMVP 2016年6月9日 3:37
- 回答としてマーク 星 睦美 2016年6月30日 7:59
-
遅くなりました。
わたしの持っている本では DELETE FROM ~ [WHERE ~] しか載っていないので
このような使い方ができることをはじめて知りました。
どうもありがとうございました。
- 編集済み MetalDragoon 2016年6月8日 6:09