Я пытаюсь сделать очень простое обновление таблицы, где я хочу заменить одну строку другой в большой таблице.Я пытаюсь сделать это в пакетном режиме, потому что таблица содержит сотни миллионов строк.
Но мне нужно заменить строку по-разному в зависимости от того, что там было, но все же выполнить требование номера пакета всамая последняя отметка времени.
Я не хочу запускать 5 разных сценариев по отдельности.
Я дошел до этого момента, но не знаю, как правильно применить обновление в зависимости отчто там было изначально.
Есть идеи, как это сделать эффективно?
DECLARE @batchsize bigint = 1000;
WHILE 1 = 1
BEGIN
UPDATE TOP (@batchsize) Table1
SET Row1 = 'To1' -- want to set To2, To3, To4, To5, etc. depending on what was in there already
FROM (SELECT TOP (@batchsize) Id
FROM Table1
ORDER BY TimeStamp DESC) tto
WHERE Table1.Row1 in ('From1', 'From2', 'From3', 'From4', 'From5') AND Table1.Id = tto.Id;
if @@ROWCOUNT < @batchsize
BEGIN
PRINT('All Done');
BREAK;
END;
END;