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

标签 mysql sql

为简单起见,假设我有一列“Hour”,其值为 10 或 12。我希望更新一个新列 Hour_type,如果 Hour 值为 10,则为“A”,如果为 12,则为 B,依此类推在。我可以使用 CASE 输出一列“Hour_type”,如下

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;

最佳答案

case [...] end block 是一个表达式。 update 用于从表达式中设置列。因此,只需获取整个 case [...] end block ,并将其作为所需列的 update 的右侧即可。这也适用于任何其他可选择的表达式(除非类型冲突等)

关于mysql - 使用 CASE 根据其他列值更新列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33101276/

相关文章:

mysql - 在 MySQL 中,是否可以对一行设置 UNIQUE 约束?

sql - 如何在 SQL 查询中选择每组的第一行?

php - MySQL 不尊重 UNIQUE 和 PRIMARY-keys

php - 仅选择当前日期或 future 日期的所有内容

Python 2.7 MySQLdb将从数据库读取的最后一行保存到文本文件中

php - 如果特定酒店(度假村)的客房类型不止一种,如何在下拉菜单中填充度假村(酒店)的客房类型?

c# mysqlDb 连接在单独的类中

未找到 MySQL\Workbench\ssh\known_hosts

sql - 查询 : find rows that do not belong to a list of values

sql - 查询以检索值为空或仅为数字的行