我有这张桌子:
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
答案 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"