mysql - 某些 SQL Case 语句设置为 NULL

标签 mysql sql case

您好,我注意到我的 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/

相关文章:

php - 如何从mysql显示平均值

php - SQL - 查询以从搜索中返回最相关的结果

mysql - 如何将一个表连接到另一个表,其中 userid = userid 但仅限于该日期?

c# - Log4Net AdoNetAppender- 截断表/删除旧记录/限制 DB 大小

javascript - 使日语文本(平假名、片假名和汉字)可见

sql - 如何在单个 SQL CASE 语句中获取多个列?

php - 连接足球/足球网站的表格和数据

php - 在选择查询循环中插入查询

python - 在 Python/SQLite 3 中格式化 SQL 查询输出

mysql CASE WHEN 要么但不是两者