Обновление SQL - несколько строк и несколько критериев в одном операторе SQL
Я пытаюсь обновить два поля на основе двух разных критериев, и я не могу понять, как сделать это в одном операторе SQL.
Это возможно без петли?
Вот несколько примеров того, чего я пытаюсь достичь:
Update Leadtimes Set Leadtime = 10 Where supplier = 123 and location = 1;
Update Leadtimes Set Transit_Leadtime = 5 Where supplier = 123 and location = 1;
Update Leadtimes Set Leadtime = 12 Where supplier = 123 and location = 2;
Update Leadtimes Set Transit_Leadtime = 6 Where supplier = 123 and location = 2;
Update Leadtimes Set Leadtime = 5 Where supplier = 223 and location = 1;
Update Leadtimes Set Transit_Leadtime = 3 Where supplier = 223 and location = 1;
Update Leadtimes Set Leadtime = 7 Where supplier = 223 and location = 2;
Update Leadtimes Set Transit_Leadtime = 2 Where supplier = 223 and location = 2;
Это заявление, которое я нашел в Интернете, что мне не удалось изменить работу.
UPDATE categories
SET display_order = CASE id
WHEN 1 THEN 3
WHEN 2 THEN 4
WHEN 3 THEN 5
END,
title = CASE id
WHEN 1 THEN 'New Title 1'
WHEN 2 THEN 'New Title 2'
WHEN 3 THEN 'New Title 3'
END
WHERE id IN (1,2,3)
2 ответа
Update Leadtimes
Set
Leadtime = CASE CAST(supplier AS VARCHAR(MAX)) + CAST(location AS VARCHAR(MAX))
WHEN '1231' THEN 10
WHEN '1232' THEN 12
WHEN '2231' THEN 5
WHEN '2232' THEN 7
END,
Transit_Leadtime = CASE CAST(supplier AS VARCHAR(MAX)) + CAST(location AS VARCHAR(MAX))
WHEN '1231' THEN 5
WHEN '1232' THEN 6
WHEN '2231' THEN 3
WHEN '2232' THEN 2
END
Where supplier in (123, 223) and location in (1, 2);
Вот результаты:
Update Leadtimes Set Leadtime = 10 Where supplier = 123 and location = 1;
Update Leadtimes Set Transit_Leadtime = 5 Where supplier = 123 and location = 1;
Может быть написано как:
UPDATE Leadtimes SET Leadtime = 10, Transit_Leadtime = 5 WHERE supplier = 123 AND location = 1;
Я подготовил бы заявление формы:
UPDATE Leadtimes SET Leadtime = ?, Transit_Leadtime = ? WHERE supplier = ? AND location = ?;
А затем выполните его для всех квадов данных, которые мне нужны.