2016-11-09 7 views
2

У меня есть таблица переменный называются @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).

+0

что вы подразумеваете под текущей записью? как вы его идентифицируете в таблице «workorders»? –

+0

@vkp Вы можете снова проверить вопрос, пожалуйста? – TimeToCode

+1

Обратите внимание: временные таблицы ('# WorkOrders') обычно лучше, чем табличные переменные (' @ WorkOrders'), поскольку переменные таблицы не имеют статистики. Подробнее здесь https://blogs.msdn.microsoft.com/naga/2015/05/10/sql-server-performance-tuning-table-variable-vs-temporary-tables/ – mendosi

ответ

3

Можете ли вы не просто INNER JOIN таблицу @workorders в вашем заявлении DELETE?

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

О, Боже, я немного тупой. Большое спасибо. – TimeToCode

+1

Не беспокойтесь, иногда просто нужна другая пара глаз –