我在 MySql 中使用 CASE 语句时遇到问题。我在下面添加了一些代码作为我正在尝试做的示例。我认为如果 WHEN 语句中没有匹配项,则不会发生任何更改,但这似乎没有发生。
我在 my_contacts 表中没有记录的 contact_id 值为 66,所以我认为什么都不会发生,但 zip_code 列中的所有值都更改为 null。为什么是这样?
UPDATE my_contacts
SET zip_code =
CASE
WHEN contact_id = 66 THEN '33333'
END;
我如何只使用案例更新一些记录?例如,我只想更新与contact_id = 1 和contact_id = 2 匹配的记录。它确实更新了这两条记录,但也将现有的邮政编码从 '90004' 更改为 NULL,这是为什么呢?
UPDATE my_contacts
SET zip_code =
CASE
WHEN contact_id = 1 THEN '94301'
WHEN contact_id = 2 THEN '08540'
END;
查询正常,3 行受影响(0.01 秒)匹配行:5 更改:3 警告:0