MySQL:高效更新多行
问题:是否可以同时更新多个 MySQL 行?
答案:当然! INSERT ... ON DUPLICATE KEY UPDATE
语句提供了一个有效的解决方案。
示例:
假设我们有一个结构如下的表,我们需要应用多项更新:
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;
使用 INSERT ... ON DUPLICATE KEY UPDATE
进行合并更新:
我们可以使用单个更高效的查询来获得相同的结果,而不是多个单独的 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>
此查询尝试插入新行。 如果指定 id
的行已存在(由于 id
上的主键或唯一索引),则 ON DUPLICATE KEY UPDATE
子句生效,根据提供的值更新 Col1
和 Col2
值在 VALUES()
子句中。 与执行多个单独的 UPDATE
语句相比,此方法显着提高了性能。
以上是如何同时更新多个 MySQL 行?的详细内容。更多信息请关注PHP中文网其他相关文章!