Я новичок в 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)
Я использую «ГДЕ» для повышения производительности (без него проверяется каждая строка в таблице).
Но что, если у меня есть этот senario (когда я не хочу обновлять заголовок для 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)
Приведенный выше код изменит заголовок для идентификаторов 2 и 3 на "NULL" ...
Как правильно сделать запрос, но пропустить обновление заголовка для идентификаторов 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)