Mysql 从关联数组进行sql批量更新

Mysql 从关联数组进行sql批量更新,mysql,sql,Mysql,Sql,我想更新一个表,并根据不同的where值使用不同的更新值: [ "2" => "7", "5" => "23" ] 上述数据应导致columnA=2的所有行将columnB=7和columnA=5的行更新为columnB=23 我可以在一个查询中执行此操作,还是需要使用单独的更新查询?针对您的具体情况的最佳解决方案如下(它快速且可读): 此外,您还可以在不使用的情况下进行操作,其中。但对于大型表,它的效果可能会降低,因为columnB将在每一行中重新分配其“当前值”,而column

我想更新一个表,并根据不同的where值使用不同的更新值:

[
"2" => "7",
"5" => "23"
]
上述数据应导致columnA=2的所有行将columnB=7和columnA=5的行更新为columnB=23


我可以在一个查询中执行此操作,还是需要使用单独的更新查询?

针对您的具体情况的最佳解决方案如下(它快速且可读):

此外,您还可以在不使用
的情况下进行操作,其中
。但对于大型表,它的效果可能会降低,因为
columnB
将在每一行中重新分配其“当前值”,而
columnA不在(2,5)

如果您的条件不是一列等于不同的值,请使用复杂的
大小写
表示法(条件位于
WHEN
之后):

结尾的一个小笑话。 试试数学(2=>7,5=>23):


针对您的具体案例的最佳解决方案如下(快速且可读):

此外,您还可以在不使用
的情况下进行操作,其中
。但对于大型表,它的效果可能会降低,因为
columnB
将在每一行中重新分配其“当前值”,而
columnA不在(2,5)

如果您的条件不是一列等于不同的值,请使用复杂的
大小写
表示法(条件位于
WHEN
之后):

结尾的一个小笑话。 试试数学(2=>7,5=>23):


您正在使用哪个数据库?@YossiVainshtein mysql您正在使用哪个数据库?@YossiVainshtein mysql
UPDATE MyTable
SET
    columnB =
        CASE columnA 
            WHEN 2 THEN 7
            WHEN 5 THEN 23
        END
WHERE columnA IN (2, 5)
UPDATE MyTable
SET
    columnB =
        CASE columnA 
            WHEN 2 THEN 7
            WHEN 5 THEN 23
            ELSE columnB -- reassign the same value instead of using WHERE
        END
UPDATE MyTable
SET
    ColumnB =
        CASE 
            WHEN columnA = 2 THEN 7
            WHEN columnA = 5 AND 1 = 1 THEN 23 -- FOR EXAMPLE
            ELSE ColumnB
        END
UPDATE MyTable
SET columnA = (11 * columnB * columnB + 83 * columnB) / 30
WHERE columnA IN (2, 5)