如果不存在则插入,如果存在则更新且条件为真

时间:2013-09-19 23:21:05

标签: mysql

我的表格包含id(主键),user_idname。如果user_id与现有user_id不同,我想插入新记录,如果user_id相同但name user_id }}已更改,name应该更新。怎么做。我已经完成了此操作,但它不会针对具有不同user_id的相同name进行更新。

CREATE TABLE test 
    (
     id int auto_increment primary key, 
     user_id int,
     name varchar(60)
    );


INSERT INTO test (user_id,name)
VALUES('01','user1');
INSERT INTO test (user_id,name)
VALUES('02','user2');
INSERT INTO test (user_id,name)
VALUES('03','user3');




insert into test (user_id, name) values('01', 'new_user') on duplicate key update name=values(name);

以下是sqlfiddlehttp://sqlfiddle.com/#!2/aa18e/1

1 个答案:

答案 0 :(得分:1)

您需要将user_id声明为UNIQUE,例如:

CREATE TABLE test 
    (
     id int auto_increment, 
     user_id int,
     name varchar(60),
     primary key(id),
     unique key(user_id)
    );

更新了小提琴:http://sqlfiddle.com/#!2/6a5d1/1