在我的项目中,我使用一个MySQL表来存储每个id的实际信息(省略了不必要的字段):
CREATE TABLE mytable (
`id` varchar(8) NOT NULL,
`DateTime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=MyISAM
如果此传入的DateTime
较新,我需要更新此表中的行并仅插入新的DateTime
。但与此同时,我不知道表中是否已存在具有此类id
的行。这是我想要实现的伪代码:
if id does not exist
insert id and DateTime
else if newDateTime > DateTime
update DateTime
是否可以在一个查询中执行此类操作?如果没有 - 可能是什么工作方法?
PS:我认为我没有权限添加存储过程,所以这应该是最后的手段。
答案 0 :(得分:2)
我测试了这个并且它有效。我为此感到非常自豪。
INSERT INTO mytable (`id`,`DateTime`)
VALUES ('your_new_id','your_new_DateTime')
ON DUPLICATE KEY UPDATE `DateTime` = IF(`DateTime` < 'your_new_DateTime', 'your_new_DateTime', `DateTime`)