首頁 > 資料庫 > 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 語句為此類場景提供了方便的語法。
ON DUPLICATE KEY UPDATE <column_name>=<select_column_name>, ...
登入後複製

在您的情況下,您需要更新 exp_id、created_by、location、animal 之外的所有欄位、開始時間和結束時間。此更新子句的語法為:

這裡,;指的是 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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板