2012-12-14 27 views
0

如標題所示,我想要插入一個新值或者如果其主鍵已存在,則更新該行,但只有在數據庫值比給一個新的。mysql:更新或創建條目,其中提交日期比db中更新

查詢是這樣的,但它有問題where語句

INSERT INTO myTable(field1_key, field2, datefield) VALUES('val1', 'val2', '2012-12-12 12:12:12') 
ON DUPLICATE KEY UPDATE 
field2='val2' 
datefield='2012-12-12 12:12:12' 
WHERE datefield <'2012-12-12 12:12:12' 
+0

是'field1' promary關鍵?如果沒有,你永遠不會得到密鑰複製 –

回答

3

如果它是新的只是相同的值「替換」它:

INSERT INTO myTable(field1, field2, datefield) VALUES ('val1', 'val2', '2012:12:12 12:12') 
ON DUPLICATE KEY UPDATE 
datefield=IF(datefield < VALUES(datefield), VALUES(datefield), datefield), 
field2=IF(datefield < VALUES(datefield), VALUES(field2), field2) 
+0

不完全工作:第二部分只更新日期字段。但它應該更新所有字段(+字段1)。這個怎麼做?謝謝 – user1324936

+0

這沒有意義。你主要是什麼? – AndreKR

+0

field1是主鍵,我的真實表格不止這兩行。這些行不會更新 – user1324936