使用CASE根据其他列值更新列值

时间:2015-10-13 11:18:25

标签: mysql sql

为简单起见,我说我有一个专栏' Hour'这是10或12的值。我希望更新一个新列,Hour_type将是' A'如果小时值为10或B如果为12,依此类推。我可以输出一列,' Hour_type'通过使用CASE,如下

SELECT CASE WHEN Hour = 10 then 'A'
            WHEN hour = 12 then 'B'
            else 'c'
        end
as Hour_type
from Traffic_Counts

这会输出正确的答案,但不会将值插入表中。

我希望使用这些值设置表中存在的列。

SELECT CASE WHEN Hour = 10 then 'A'
            WHEN hour = 12 then 'B'
        end
as Hour_type
from Traffic_Counts set Hour_type = Hour_type

这会导致语法错误。

在伪代码中,我试图添加一个' if'到这个简单的更新列

update table set Hour_type = 'a' if Hour = 10,
                             'b' if Hour = 12;

3 个答案:

答案 0 :(得分:1)

使用它,但我不确定你在做什么。 如果HOUR不是10或12

,则返回'a','b'或'X'
update table set Hour_type = IF(HOUR = 10 , 'a', IF(HOUR = 12, 'b', 'X'));

答案 1 :(得分:1)

case [...] end块是一个表达式。 update用于表达式中的set列。因此,只需取整个case [...] end块并将其update的右侧放到所需的列中即可。这也适用于任何其他select表达式(禁止冲突的类型等)

答案 2 :(得分:0)

您可以使用案例陈述来更新记录。通过查询链接

MySQL CASE...WHERE...THEN statements