首页 >数据库 >mysql教程 >MySQL 可以在单个查询中更新多行吗?

MySQL 可以在单个查询中更新多行吗?

DDD
DDD原创
2025-01-21 20:21:10455浏览

Can MySQL Update Multiple Rows in a Single Query?

MySQL批量行更新

MySQL 的 INSERT 语句允许同时插入多行数据。但是,能否用单个查询更新多行呢?

批量更新查询

是的,可以使用 INSERT ... ON DUPLICATE KEY UPDATE 语句一次性更新多行。当插入一行到表中,并且主键或唯一键已存在时,会发生以下情况:

  • 如果 INSERT 语句包含 DUPLICATE KEY UPDATE 子句,则使用更新子句中提供的值更新现有行。
  • 如果 INSERT 语句不包含 DUPLICATE KEY UPDATE 子句,则会生成错误。

示例

考虑以下表格:

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

我们希望将以下更新合并到单个查询中:

<code class="language-sql">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;</code>

使用 INSERT ... ON DUPLICATE KEY UPDATE 的相应批量更新查询如下:

<code class="language-sql">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);</code>

此查询会在新行不存在时插入新行,或者在主键已存在于表中时更新现有行。

以上是MySQL 可以在单个查询中更新多行吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn