Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql:更新或创建提交日期比数据库中更新的条目_Mysql - Fatal编程技术网

mysql:更新或创建提交日期比数据库中更新的条目

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

正如标题中所说,我想插入一个新值,或者如果它的主键已经存在,则更新该行,但前提是数据库值比给定的新值旧

查询类似于此,但它与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'
将值('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)

Is
field1
promary键?如果没有,您将永远无法获得钥匙复制IS
field1
promary钥匙?如果没有,您将永远无法获得密钥副本Doesn无法完全工作:第二部分仅更新datefield。但它应该更新所有字段(+字段1)。如何做到这一点?谢谢,这没有道理。您的主键是什么?field1是主键,我的实际表有两行以上。这些行不会更新,因此您不能在重复键上更新
field1
,因为如果具有该值的行已存在,它将更新该行,并且
field1
不会更改,如果该行尚不存在,则将插入一行,因此根本不会执行更新。您是对的。它不应该更新字段field1,但应该更新datefield+其他字段。我改变了我的问题。没有完全起作用:第二部分只更新日期字段。但它应该更新所有字段(+字段1)。如何做到这一点?谢谢,这没有道理。您的主键是什么?field1是主键,我的实际表有两行以上。这些行不会更新,因此您不能在重复键上更新
field1
,因为如果具有该值的行已存在,它将更新该行,并且
field1
不会更改,如果该行尚不存在,则将插入一行,因此根本不会执行更新。您是对的。它不应该更新字段field1,但应该更新datefield+其他字段。我改变我的问题。