2

嗨,我注意到我的 SQL 案例语句不正确,并且将字段 Age 设置为 NULL 以用于 ids 1-3。我将如何阻止这种情况发生?

谢谢

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)
4

3 回答 3

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)
于 2012-12-22T22:57:24.090 回答
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)

没有测试过这个,但它应该可以工作。

于 2012-12-22T22:58:53.993 回答
0

您需要为 1 - 3 添加一个 WHEN... THEN。否则它不会分配任何东西。或添加其他。

于 2012-12-22T22:57:34.400 回答