有两种方法可以执行 MySql 多重更新,如 Multiple Updates in MySQL 中所述。 (前两个答案)
但是,如果只有更新而没有插入,这是更好的方法(性能方面)。
INSERT ... ON DUPLICATE KEY UPDATE
或者
使用CASE WHEN
最佳答案
应该测量。
如果您在两个选项之间进行选择,第一个选项将尝试插入一行,并在违反唯一约束时更新数据。第二种方法需要对要更新的每个字段进行 bool 检查列表。列表的长度是您要更新的行数。这对于很多行来说是一个糟糕的选择。
如果并行进程删除了您尝试更新的几行,则 INSERT 选项可能会很危险。在这种情况下,它将尝试执行其主要任务:插入行。
但还有另一种选择:将由 UNION ALL 分隔的一系列行与要更新的表连接起来。这是我通常倾向于使用的选项。
UPD:我在链接的问题中添加了 UNION ALL 的答案。
关于MySQL 多次更新 - 性能更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19032310/