2

我有一个包含id(主键)user_idname. user_id如果 s与现有 s 不同,我想插入一条新记录user_id,并且如果 suser_id相同但namethisuser_id已更改,则name应该更新 s。怎么做。我已经这样做了,但它不会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

4

1 回答 1

1

您需要声明user_idUNIQUE,例如:

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

于 2013-09-19T23:25:10.727 回答