我是 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”来提高性能(如果没有它,表中的每一行都会被测试)。
但是如果我遇到这种情况(当我不想更新 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)
上面的代码会将 id 2 和 3 的标题更改为“NULL”...
进行查询的正确方法是什么,但跳过更新 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)