我正在做一個插入查詢,其中大多數列需要更新爲新的值,如果一個唯一的鍵已經存在。它是這樣的:INSERT INTO ...從重複鍵更新
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 ...;
//update all fields to values from SELECT,
// except for exp_id, created_by, location, animal,
// starttime, endtime
我不知道該UPDATE
從句的語法應該是什麼。我如何參考SELECT
條款中的當前行?
@dnagirl:**提示**不要試圖更新任何PK列,只有需要更新的列纔會進入列表 – lexu 2010-03-18 18:18:39
您的建議語法有效,並且需要't.'。我還發現了一篇關於xaprb的文章(http://www.xaprb.com/blog/2006/02/21/flexible-insert-and-update-in-mysql/),它使用這種語法:'在重複密鑰更新b上=值(b),c =值(c)'。這也適用。 – dnagirl 2010-03-18 18:43:47
注意:當SELECT語句具有GROUP BY子句時,這不起作用 – joHN 2014-07-30 11:44:40