mysql:更新或创建提交日期比数据库中更新的条目
正如标题中所说,我想插入一个新值,或者如果它的主键已经存在,则更新该行,但前提是数据库值比给定的新值旧 查询类似于此,但它与where语句有问题mysql:更新或创建提交日期比数据库中更新的条目,mysql,Mysql,正如标题中所说,我想插入一个新值,或者如果它的主键已经存在,则更新该行,但前提是数据库值比给定的新值旧 查询类似于此,但它与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 d
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'
将值('val1'、'val2'、'2012-12-12 12:12:12')插入myTable(字段1_键、字段2、日期字段)
关于重复密钥更新
field2='val2'
datefield='2012-12-12:12:12'
其中datefield如果较新,只需使用相同的值“替换”即可:
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)
插入myTable(field1,field2,datefield)值('val1','val2','2012:12:12')
关于重复密钥更新
datefield=IF(日期字段<值(日期字段),值(日期字段),日期字段),
字段2=IF(日期字段<值(日期字段),值(字段2),字段2)
如果是较新的,只需用相同的值“替换”即可:
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)
插入myTable(field1,field2,datefield)值('val1','val2','2012:12:12')
关于重复密钥更新
datefield=IF(日期字段<值(日期字段),值(日期字段),日期字段),
字段2=IF(日期字段<值(日期字段),值(字段2),字段2)
Isfield1
promary键?如果没有,您将永远无法获得钥匙复制ISfield1
promary钥匙?如果没有,您将永远无法获得密钥副本Doesn无法完全工作:第二部分仅更新datefield。但它应该更新所有字段(+字段1)。如何做到这一点?谢谢,这没有道理。您的主键是什么?field1是主键,我的实际表有两行以上。这些行不会更新,因此您不能在重复键上更新field1
,因为如果具有该值的行已存在,它将更新该行,并且field1
不会更改,如果该行尚不存在,则将插入一行,因此根本不会执行更新。您是对的。它不应该更新字段field1,但应该更新datefield+其他字段。我改变了我的问题。没有完全起作用:第二部分只更新日期字段。但它应该更新所有字段(+字段1)。如何做到这一点?谢谢,这没有道理。您的主键是什么?field1是主键,我的实际表有两行以上。这些行不会更新,因此您不能在重复键上更新field1
,因为如果具有该值的行已存在,它将更新该行,并且field1
不会更改,如果该行尚不存在,则将插入一行,因此根本不会执行更新。您是对的。它不应该更新字段field1,但应该更新datefield+其他字段。我改变我的问题。