mysql - 使用不同的值更新多行

标签 mysql sql sql-update

我在我的 MySQL 数据库“users”中得到了这个表。它具有字段“id”和“value”。

现在,我想用一个单个 SQL 查询更新此表中的很多行,但许多行应该获得不同的值。目前,我正在使用这个:

UPDATE users
    SET value = CASE id
        WHEN 1 THEN 53
        WHEN 2 THEN 65
        WHEN 3 THEN 47
        WHEN 4 THEN 53
        WHEN 5 THEN 47
    END
WHERE id IN (1,2,3,4,5)

这行得通。但我觉得我可以做一些优化,因为我只分配了大约 3 或 4 个不同的值给行。如您所见,现在这些是 47、53 和 65。有没有一种方法可以更新同一查询中同时获得相同值的所有行?或者,还有其他方法可以优化它吗?

最佳答案

与其执行 case variable when value then ...,不如尝试执行 case when condition then ... - 像这样:

UPDATE users
    SET value = CASE 
        WHEN id in (1,4) THEN 53
        WHEN id = 2 THEN 65
        WHEN id in (3,5) THEN 47
    END
WHERE id IN (1,2,3,4,5)

关于mysql - 使用不同的值更新多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3882388/

相关文章:

c# - 从一行中的字符串列表构建 SQL "where in"语句?

php - 如何从 HTML 表和数据库中删除查询?

"WHERE"附近的 Android 数据库更新 : syntax error

postgresql - sequelize 更新事务锁行

mysql - 如何通过MySQL Workbench生成数据库关系图?

MYSQL建表、约束、外键

javascript - 为什么 req.body 对我来说总是未定义

sql - 如何编写 sql 查询来对数据集进行排序或分组

MySQL 找出 select 语句中使用了哪个 WHERE 子句

sql - 在 SQL 2008 中使用 CASE 更新多行