MySQL中的多个更新

我知道你可以一次插入多行,是否有办法在MySQL中一次更新多行(如在一个查询中)?

编辑: 例如,我有以下几点

Name   id  Col1  Col2
Row1   1    6     1
Row2   2    2     3
Row3   3    9     5
Row4   4    16    8

我想将所有以下更新合并到一个查询中

UPDATE table SET Col1 = 1 WHERE id = 1;
UPDATE table SET Col1 = 2 WHERE id = 2;
UPDATE table SET Col2 = 3 WHERE id = 3;
UPDATE table SET Col1 = 10 WHERE id = 4;
UPDATE table SET Col2 = 12 WHERE id = 4;
0
额外 编辑
意见: 1

5 答案

您也可能有兴趣在更新上使用连接,这也是可能的。

Update someTable Set someValue = 4 From someTable s Inner Join anotherTable a on s.id = a.id Where a.id = 4
-- Only updates someValue in someTable who has a foreign key on anotherTable with a value of 4.

编辑:如果您要更新的值不是来自数据库中的其他位置,则需要发出多个更新查询。

0
额外
UPDATE table1, table2 SET table1.col1='value', table2.col1='value' WHERE table1.col3='567' AND table2.col6='567'

这应该适用于你。

MySQL手册中有多个表的参考。

0
额外
UPDATE tableName SET col1='000' WHERE id='3' OR id='5'

这应该达到你想要的。只需添加更多的ID。我已经测试过它。

0
额外

是的,这是可能的 - 您可以使用INSERT ... ON DUPLICATE KEY UPDATE。

使用你的例子:

INSERT INTO table (id,Col1,Col2) VALUES (1,1,1),(2,2,3),(3,9,3),(4,10,12)
ON DUPLICATE KEY UPDATE Col1=VALUES(Col1),Col2=VALUES(Col2);
0
额外
如果没有重复,那么我不希望该行被插入。 id应该做什么?因为我从其他站点获取信息来维护带有ID的表。我正在插入与该ID相关的值。如果该网站有新的记录,那么我将最终只插入ID和计数,除了所有其他信息。当且仅当有一个条目为id,那么它应该更新,否则它应该跳过。我该怎么办?
额外 作者 Jayapal Chandran,
所以如果它像插入到跳过空或重复更新跳过空...那么这将是很好的。
额外 作者 Jayapal Chandran,

以下内容将更新一个表中的所有行

Update Table Set
Column1 = 'New Value'

下一个将更新Column2的值大于5的所有行

Update Table Set
Column1 = 'New Value'
Where
Column2 > 5

有所有 Unkwntech 更新多个表格的示例

UPDATE table1, table2 SET
table1.col1 = 'value',
table2.col1 = 'value'
WHERE
table1.col3 = '567'
AND table2.col6='567'
0
额外