您好我注意到我的SQL case语句不正确,并且为ids 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)
答案 0 :(得分:4)
将ELSE Age
添加到您的案例表达式中:
`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)
答案 1 :(得分:2)
我想你想要这个:
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)
没有对此进行测试,但它应该有效。
答案 2 :(得分:0)
你需要为1 - 3添加一个WHEN ...那么否则它不会分配任何东西。或者添加其他内容。