MYSQL UPDATE SET 在同一列上但具有多个 WHERE 子句

标签 mysql

对于 MYSQL,我正在使用这个查询:

UPDATE CustomerDetails_COPY
SET Category_ID = 10
WHERE Category_ID = 2

很好,但我想向它添加 15 多个 SET/WHERE 广告,例如:

UPDATE CustomerDetails_COPY
SET Category_ID = 9  WHERE Category_ID = 3
SET Category_ID = 12 WHERE Category_ID = 4
SET Category_ID = 11 WHERE Category_ID = 5
.....

我该如何添加?

编辑:

根据猎人的建议:

UPDATE CustomerDetails_COPY
    SET Category_ID = CASE Category_ID
        WHEN 2 THEN 10 
        WHEN 3 THEN 9
        WHEN 4 THEN 12
        WHEN 5 THEN 11
    END
WHERE Category_ID IN (2,3,4,5)

这很好用!谢谢

最佳答案

像这样的东西应该适合你:

UPDATE CustomerDetails_COPY
    SET Category_ID = CASE Category_ID
        WHEN 2 THEN 10 
        WHEN 3 THEN 9
        WHEN 4 THEN 12
        WHEN 5 THEN 11
    END
WHERE Category_ID IN (2,3,4,5)

或者,正如 Simon 所建议的,您可以这样做以避免输入两次值:

UPDATE CustomerDetails_COPY
    SET Category_ID = CASE Category_ID
        WHEN 2 THEN 10 
        WHEN 3 THEN 9
        WHEN 4 THEN 12
        WHEN 5 THEN 11
        ELSE Category_ID
    END

来源:http://www.karlrixon.co.uk/writing/update-multiple-rows-with-different-values-and-a-single-sql-query/

关于MYSQL UPDATE SET 在同一列上但具有多个 WHERE 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9368505/

相关文章:

php - mysql phpmyadmin 删除表超时,现在无法打开也不会被删除

MySQL - NULL 安全不等于运算符

php - 用户名已被使用

mysql - 在这种情况下我该如何重写 COUNT 的正确语句

php - 如何使用数据库中的数组选择mysql

php - 根据 LastModified 列比较两个表?

mysql - 如何比较sql数据库的日期和时间字段与当前日期,其中日期和时间是2019年6月6日11 :19AM this format in MYSQL

mysql - 难以为事件构建 SQL 查询

mysql - 没有公共(public)键的 SQL 连接查询

php - MySQL:仅使用单个查询基于 2 个字段更新多行