您好,我注意到我的 SQL case 语句不正确,并且将 ID 1-3 的字段 Age 设置为 NULL。我该如何阻止这种情况发生?
谢谢
UPDATE table
SET `Name` = CASE `id`
WHEN 1 THEN 'Sam'
WHEN 2 THEN 'Adam'
WHEN 3 THEN 'James'
WHEN 4 THEN 'Chris'
END,
`Age` = CASE `id`
WHEN 4 THEN '22'
END
WHERE `id` IN (1,2,3,4)
最佳答案
将 ELSE Age
添加到您的 case 表达式中:
`Age` = CASE `id` WHEN 4 THEN '22' ELSE `Age` END
-- ^^^^^^^^^^
这会导致年龄被设置回其原始值。
完整的查询如下所示:
UPDATE `table`
SET `Name` = CASE `id`
WHEN 1 THEN 'Sam'
WHEN 2 THEN 'Adam'
WHEN 3 THEN 'James'
WHEN 4 THEN 'Chris'
END,
`Age` = CASE `id`
WHEN 4 THEN '22'
ELSE `Age`
END
WHERE `id` IN (1,2,3,4)
关于mysql - 某些 SQL Case 语句设置为 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14007276/