如何删除存储过程中的多个匹配行?

时间:2014-07-22 18:40:06

标签: sql sql-server stored-procedures delete-row

我的存储过程中有以下定义。

DECLARE @DeletedRoleTag table( Role_key bigint, Tag_key bigint)

E.G。 @DeletedRoleTag

Role_key    Tag_key
   1           2
   3           4

现在从我的sql表(RoleTag)我想删除与@DeletedRoleTag匹配的行。

如果RoleTag表中存在Role_key = 1且Tag_key = 2或Role_key = 3且Tag_key = 4的行,则需要将其删除。 我该怎么做?

2 个答案:

答案 0 :(得分:2)

我会使用exists子句执行此操作:

delete from RoleTag rt
   where exists (select 1
                 from @DeletedRoleTag drt
                 where drt.Role_key = rt.Role_key and
                       drt.Tag_key = rt.Tag_key
                );

答案 1 :(得分:0)

尝试:

delete
from roleTag
from roleTag rt
inner join @DeletedRoleTag drt ON rt.role_key = drt.role_key
    and rt.tag_key = drt.tag_key