【问题标题】: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/…

标签: sql sql-server tsql sql-delete table-variable


【解决方案1】:

您不能在DELETE 语句中简单地INNER JOIN @workorders 表吗?

DELETE w 
FROM workorders w INNER JOIN @workorders tw ON w.id_workorder = tw.id_workorder

【讨论】:

  • 天哪,我有点笨。非常感谢。
  • 不用担心,有时只需要另一双眼睛
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-25
  • 1970-01-01
  • 1970-01-01
  • 2011-03-30
  • 2019-06-03
相关资源
最近更新 更多