將資料插入到某些欄位可能已經存在的表中時存在,您可能需要用新值更新這些列。 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」、「i nact」、「inadur」、「inadist」等,都會使用「SELECT」子句中的值進行更新。
透過使用正確的語法,您可以在單一查詢中執行插入和更新,確保您的數據有效地保持最新。
以上是如何使用 MySQL 的'INSERT INTO ... SELECT ... ON DUPLICATE KEY UPDATE”在插入新記錄時高效更新現有記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!