创建循环以使用另一个表中的值来执行删除

时间:2016-07-06 16:29:52

标签: sql sql-server

我试图找出一种方法来创建一个循环,该循环将从不同表的列中获取id并使用该id执行删除。

@ID表示与另一个表不同的ID。如何创建一个循环来读取每个ID并根据该ID从其他表中删除行?

Declare @ID int
Set @ID = dbo.control.id

Delete from dbo.search where id=@id
Delete from dbo.searchfolder where id=@id
Delete from dbo.application where id =@id

1 个答案:

答案 0 :(得分:3)

你不需要循环,只需加入即可,你可以为所有表实现相同的逻辑

Delete s
from dbo.search s
join
dbo.content c
on c.id=s.id

您也可以使用exists,在某些情况下可能会更快,具体取决于数据密度

delete from t2 where exists(select 1 from dbo.t1 where t1.id=t2.id)