将数据插入到某些列可能已经存在的表中时存在,您可能需要用新值更新这些列。 MySQL 使用“ON DUPLICATE KEY UPDATE”子句为此类场景提供了方便的语法。
在您的查询中,您有一个“INSERT INTO”语句,后跟一个“SELECT”语句。目标是将新行插入到“lee”表中并更新与唯一键匹配的现有行。为此,您需要在“ON DUPLICATE KEY UPDATE”子句中指定要更新哪些列。
MySQL 将等号 (=) 之前的部分解释为引用“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, ...
在此查询中,“INSERT INTO”子句中的列是未更新的有“exp_id”、“created_by”、“location”、“animal”、“starttime”和“endtime”。所有其他列,例如“entct”、“inact”、“inadur”、“inadist”等,都会使用“SELECT”子句中的值进行更新。
通过使用正确的语法,您可以在单个查询中执行插入和更新,确保您的数据有效地保持最新。
以上是如何使用 MySQL 的'INSERT INTO ... SELECT ... ON DUPLICATE KEY UPDATE”在插入新记录时高效更新现有记录?的详细内容。更多信息请关注PHP中文网其他相关文章!