选择正确的MySQL查询

时间:2010-11-24 17:12:00

标签: mysql

在我的项目中,我使用一个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:我认为我没有权限添加存储过程,所以这应该是最后的手段。

1 个答案:

答案 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`)