删除由表中记录数给出的记录数

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条记录:

OT-001-16 OT-002-16 OT-005-16

我需要实现一种 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

【讨论】:

天哪,我有点笨。非常感谢。 不用担心,有时只需要另一双眼睛

以上是关于删除由表中记录数给出的记录数的主要内容,如果未能解决你的问题,请参考以下文章

从包含数万亿条记录的 Oracle 表中删除数十亿条记录

如何从 db2 表中删除数百万条记录

删除数百万条记录 oracle [关闭]

神奇的记录,从 UITableView 中删除“第 0 节中的行数无效...”

自动从 Mysql 表中删除的记录

从 2 个表中获取记录数 - 一对多关系