Я новичок в MySQL.
Я использую это для обновления нескольких строк с разными значениями в одном запросе:
UPDATE categories
SET 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)
Я использую "WHERE" для повышения производительности (без него каждая строка в таблице была бы проверена).
Но что если у меня будет такой сценарий (когда я не хочу обновлять title для id 2 и 3):
UPDATE categories
SET 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'
END
WHERE id IN (1,2,3)
Приведенный выше код изменит title для id 2 и 3 на "NULL"...
Как правильно составить запрос, но пропустить обновление title для id 2 и 3 и сохранить производительность, которую дает "WHERE id IN"?
Может быть так
UPDATE categories
SET 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 THEN
WHEN THEN
END
WHERE id IN (1,2,3)