問題

場景:

假設我有兩個表,TableA和TableB. 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])
 

我問的原因是,在我看來,第一個選項在處理更大的表時會更有效。

謝謝!

  最佳答案

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

應該工作

  相同標籤的其他問題

tsqljoin