Обновление нескольких строк с разными значениями в одном запросе - MySQL

Я новичок в 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)
9
задан Hakan 13 October 2011 в 08:36
поделиться