INSERT ... SELECT ... ON DUPLICATE KEY UPDATE 语法说明
执行 INSERT 查询时,某些列可能已存在于对于目标表,可以使用 ON DUPLICATE KEY UPDATE 子句。此子句允许您指定更新条件和要更新的值。
此类查询中 UPDATE 子句的语法如下:
ON DUPLICATE KEY UPDATE column1=value1, column2=value2, ...;
要理解的关键方面是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 子句中命名的列将用于列分配默认值:
中命名的列SELECT 子句将用于指定更新值:
列未包含在 ON DUPLICATE KEY UPDATE 子句中的将不会被更新。
以上是MySQL 如何处理 INSERT ... SELECT ... ON DUPLICATE KEY UPDATE 语法?的详细内容。更多信息请关注PHP中文网其他相关文章!