T-SQL:选择要通过联接删除的行

场景:


假设我有两个表TableA和TableB。TableB的主键是单列(BId),并且是TableA中的外键列。


在我的情况下,我想删除TableA中与TableB中的特定行链接的所有行:是否可以通过联接做到这一点?删除从联接中拉入的所有行?


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])

我问的原因是,在我看来,处理较大的表时,第一种选择的效率更高。


谢谢!


饮歌长啸
浏览 381回答 3
3回答

杨__羊羊

我会使用这种语法Delete a from TableA aInner Join TableB bon  a.BId = b.BIdWHERE [filter condition]

郎朗坤

是的你可以。范例:DELETE TableA FROM TableA AS aINNER JOIN TableB AS bON a.BId = b.BIdWHERE [filter condition]
打开App,查看更多内容
随时随地看视频慕课网APP