首页 > 数据库 > mysql教程 > 如何使用 INSERT INTO ... SELECT ... ON DUPLICATE KEY UPDATE 在 MySQL 中执行批量更新?

如何使用 INSERT INTO ... SELECT ... ON DUPLICATE KEY UPDATE 在 MySQL 中执行批量更新?

DDD
发布: 2024-12-13 00:56:17
原创
289 人浏览过

How to Perform Bulk Updates in MySQL Using INSERT INTO ... SELECT ... ON DUPLICATE KEY UPDATE?

使用 INSERT INTO ... SELECT FROM ... ON DUPLICATE KEY UPDATE 执行批量更新

尝试将新数据插入到表中,可能存在具有相同唯一键的现有记录需要使用最新值进行更新的情况。 MySQL 使用 INSERT INTO ... SELECT FROM ... ON DUPLICATE KEY UPDATE 语句为此类场景提供了方便的语法。

在您的情况下,您需要更新除 exp_id、created_by、location、animal 之外的所有列、开始时间和结束时间。此更新子句的语法为:

ON DUPLICATE KEY UPDATE <column_name>=<select_column_name>, ...
登录后复制

这里,;指的是 INSERT INTO 子句中的列,而 则指的是 INSERT INTO 子句中的列。引用 SELECT 子句中的相应列。

根据您的查询,完整的语句将如下所示:

INSERT INTO lee(exp_id, created_by, location, animal, starttime, endtime, entct, inact, inadur, inadist, smlct, smldur, smldist, larct, lardur, lardist, emptyct, emptydur)
SELECT id, uid, t.location, t.animal, t.starttime, t.endtime, t.entct, t.inact, t.inadur, t.inadist, t.smlct, t.smldur, t.smldist, t.larct, t.lardur, t.lardist, t.emptyct, t.emptydur
FROM tmp t WHERE uid=x
ON DUPLICATE KEY UPDATE entct=t.entct, inact=t.inact, inadur=t.inadur, inadist=t.inadist, smlct=t.smlct, smldur=t.smldur, smldist=t.smldist, larct=t.larct, lardur=t.lardur, lardist=t.lardist, emptyct=t.emptyct, emptydur=t.emptydur;
登录后复制

使用此语句,MySQL 会将 tmp 中的数据插入到lee,如果遇到重复的键,它将使用 SELECT 语句中的值更新指定的列。

以上是如何使用 INSERT INTO ... SELECT ... ON DUPLICATE KEY UPDATE 在 MySQL 中执行批量更新?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板