#sql-server
#sql-сервер
Вопрос:
У меня есть таблица сопоставления:
MappingTable
OLD_ID NEW_ID
1234 A-98276
1345 A-78473
7635 A-89328
В таблице сопоставления около 10 000 строк.
У меня есть другая таблица с OLD_IDs, и мне нужно обновить значения в OLD_ID значением NEW_ID.
TestTable
OLD_ID
1234
7635
1345
Запрос будет:
UPDATE TestTable SET OLD_ID = 'A-98276' WHERE OLD_ID = '1234'
Мне нужно сделать это для каждой строки в TestTable. Я знаю, что это возможно с помощью цикла WHILE, но не уверен, как это сделать. Должен быть способ получить номер строки…
DECLARE @count, @i INT
SET @count = SELECT COUNT(*) FROM TestTable
SET @i = 1
WHILE (@i < @count)
BEGIN
UPDATE TestTable SET OLD_ID = (SELECT NEW_ID FROM MappingTable WHERE OLD_ID = @???)
SET @i = @i 1
END
Спасибо.
Ответ №1:
Цикл не должен быть необходимым. Кажется, вы ищете что-то вроде этого
update t
set OLD_ID=m.NEW_ID
from TestTable t
join MappingTable m on t.OLD_ID=m.OLD_ID;
Комментарии:
1. Спасибо. Это должно сделать это. Я попробую!