T-SQL: 結合により削除する行を選択する 質問する

T-SQL: 結合により削除する行を選択する 質問する

シナリオ:

TableA と TableB という 2 つのテーブルがあるとします。TableB の主キーは単一の列 (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])

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

ありがとう!

ベストアンサー1

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

動作するはずです

おすすめ記事