使用 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 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中文网其他相关文章!