首页 >数据库 >mysql教程 >MySQL 的 ON DUPLICATE KEY UPDATE 如何处理多行的同时插入和更新?

MySQL 的 ON DUPLICATE KEY UPDATE 如何处理多行的同时插入和更新?

Linda Hamilton
Linda Hamilton原创
2025-01-11 07:02:41953浏览

How Can MySQL's ON DUPLICATE KEY UPDATE Handle Simultaneous Inserts and Updates of Multiple Rows?

MySQL 的ON DUPLICATE KEY UPDATE:高效处理并发多行插入和更新

在 MySQL 表中插入多行时,会出现这样的情况:您需要在更新现有记录之前检查是否存在唯一键(与主键不同)。 ON DUPLICATE KEY UPDATE 子句提供了一个优雅的解决方案。

MySQL 8.0.19 及更高版本使用插入行的别名提供改进的语法。 这样可以实现更清晰、更易读的更新:

<code class="language-sql">INSERT INTO beautiful (name, age)
    VALUES
    ('Helen', 24),
    ('Katrina', 21),
    ('Samia', 22),
    ('Hui Ling', 25),
    ('Yumie', 29)
    AS new
ON DUPLICATE KEY UPDATE
    age = new.age
    ...</code>

对于 8.0.19 之前的 MySQL 版本(请注意,VALUES 方法从 8.0.20 开始已弃用),需要使用以下方法:

<code class="language-sql">INSERT INTO beautiful (name, age)
    VALUES
    ('Helen', 24),
    ('Katrina', 21),
    ('Samia', 22),
    ('Hui Ling', 25),
    ('Yumie', 29)
ON DUPLICATE KEY UPDATE
    age = VALUES(age),
     ...</code>

在这两个示例中,如果在插入过程中出现唯一键冲突,则会使用提供的值更新受影响的行。否则,将添加新行。

重要的是要记住 VALUES 中的 ON DUPLICATE KEY UPDATE 并不引用现有行的值,而是引用尝试插入新行的相应列值。

以上是MySQL 的 ON DUPLICATE KEY UPDATE 如何处理多行的同时插入和更新?的详细内容。更多信息请关注PHP中文网其他相关文章!

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