mysql-如何仅在特定条件下更新记录?

时间:2014-09-19 18:15:00

标签: mysql sql

我有这张桌子:

ID NAME age TIME
1  Mike 23  10
2  Kyle 24  20

名称是唯一的

有时当我想插入新记录时,我想用新的记录替换旧记录,而不是插入新记录

例如,如果我有此记录:

1  Mike 23  10

我要插入此记录:

1 Mike2 23 25

我用新的替换旧的:

ID NAME age TIME
1  Mike2 23  25
2  Kyle 24  20

我是通过INSET INTO TABLE(NAME) VALUES('newName') ON DUPLICATE KEY UPDATE NAME='newName';

完成的

但是,如果我想在newTIME大于旧时间时更换它,例如:

例如,如果我有此记录:

1  Mike 23  10

如果新记录TIME为25,我们将替换记录:

1  Mike2 23  25
2  Kyle 24  20

如果新记录TIME为2,我们不会替换记录:

1  Mike 23  10
2  Kyle 24  20

2 个答案:

答案 0 :(得分:1)

我认为你可以这样做,可以在on duplicate key update子句中放置一个条件表达式:

INSERT INTO TABLE(NAME, time)
    VALUES('newName', time)
    ON DUPLICATE KEY
        UPDATE NAME = (case when values(time) > time then values(name) else name end),
               time = (case when values(time) > time then values(time) else time end);

注意:您的问题中的查询在time中没有insert,但您的问题暗示了这一点。

答案 1 :(得分:0)

你是否尝试过或多或少的事情:

" UPDATE table_name设置TIME = newtime where name =' Mikes'和新时间> TIME"