删除由表中记录数给出的记录数
Posted
技术标签:
【中文标题】删除由表中记录数给出的记录数【英文标题】:Delete a number of records given by the number of records in a table 【发布时间】:2016-11-09 02:52:42 【问题描述】:我有一个名为@workorders
的表变量,该表由查询填充:
DECLARE @workorders table
(id_workorder VARCHAR(100));
INSERT INTO @workorders SELECT DISTINCT(id_workorder) FROM CampaingControl WHERE id_campaing = @id;
--get each record of the table @workorders and delete of another table
然后,我想要的是遍历表@workorders
的每条记录,并删除一条具有当前记录值的记录。
我要删除记录的表叫WorkOrders
,这个表有一列叫id_workorder
,例如:
假设表变量@workorders
有3条记录:
我需要实现一种 while 循环,以获取表 @workorders
上的每条记录并删除表 WorkOrders
上的每条记录,其中 id_workorder
= @workorders (id_workorder VARCHAR(100))(Current record)
。
【问题讨论】:
当前记录是什么意思?你如何在workorders
表中识别它?
@vkp 你能再检查一下这个问题吗?
请注意,临时表 (#WorkOrders
) 通常比表变量 (@WorkOrders
) 好,因为表变量没有统计信息。更多细节在这里blogs.msdn.microsoft.com/naga/2015/05/10/…
【参考方案1】:
您不能在DELETE
语句中简单地INNER JOIN
@workorders
表吗?
DELETE w
FROM workorders w INNER JOIN @workorders tw ON w.id_workorder = tw.id_workorder
【讨论】:
天哪,我有点笨。非常感谢。 不用担心,有时只需要另一双眼睛以上是关于删除由表中记录数给出的记录数的主要内容,如果未能解决你的问题,请参考以下文章