1. ホーム
  2. tsql

[解決済み] T-SQLです。結合で削除する行を選択する

2022-03-18 21:18:59

質問

シナリオ

TableAとTableBという2つのテーブルがあるとします。 TableBの主キーは1列(BId)で、TableAの外部キー列である。

私の状況では、TableB の特定の行とリンクしている TableA の行をすべて削除したいのですが、結合によってそれを行うことができますか?結合から取り込まれた行をすべて削除するのですか?

DELETE FROM TableA 
FROM
   TableA a
   INNER JOIN TableB b
      ON b.BId = a.BId
      AND [my filter condition]

それとも、こうせざるを得ないのか。

DELETE FROM TableA
WHERE
   BId IN (SELECT BId FROM TableB WHERE [my filter condition])

なぜこのような質問をするかというと、大きなテーブルを扱う場合には、最初のオプションの方がはるかに効率的だと思われるからです。

ありがとうございます。

解決方法は?

DELETE TableA
FROM   TableA a
       INNER JOIN TableB b
               ON b.Bid = a.Bid
                  AND [my filter condition] 

は動作するはずです。