0

タイトルで述べたように、新しい値を挿入するか、主キーが既に存在する場合は行を更新しますが、データベースの値が指定された新しい値よりも古い場合のみです。

クエリはこのようなものですが、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'
4

1 に答える 1

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)
于 2012-12-14T21:05:23.187 に答える