我正在尝试使用以下查询从两个表中删除几行
Delete top(3) ss
from stage.SubmitItemData ss
INNER JOIN stage.SubmitItems s (NOLOCK) on ss.SubmitItemId = s.SubmitItemId
where s.AgencyCode = 'NC0860000' and s.StatusId = 8
Run Code Online (Sandbox Code Playgroud)
我被难住的地方是,如果我删除参数s.AgencyCode
并且s.StatusId
查询执行没有问题。但是,如果我添加这些参数,我会得到(0) rows affected.
我想要做的就是控制在任何给定时间删除的记录数。top(n) 不是最好的方法,因为它看起来好像需要订购才能工作?为这种类型的删除创建一个循环会更好吗?
感谢您的任何建议。
DELETE TOP (3)
FROM stage.SubmitItemData
WHERE
EXISTS (SELECT 1
FROM stage.SubmitItems
WHERE SubmitItemId = SubmitItemData.SubmitItemId
AND AgencyCode = 'NC0860000'
AND StatusId = 8)
Run Code Online (Sandbox Code Playgroud)
或者你可以做这样的事情......
DELETE TOP(3) FROM ss
FROM stage.SubmitItemData ss
INNER JOIN stage.SubmitItems s WITH (NOLOCK)
ON ss.SubmitItemId = s.SubmitItemId
where s.AgencyCode = 'NC0860000' and s.StatusId = 8
Run Code Online (Sandbox Code Playgroud)