2

id(主キー) とuser_idを含むテーブルがありnameます。が既存のuser_idと異なる場合は新しいレコードを挿入したいし、が同じでもが変更されている場合は を更新する必要があります。どうやってするか。私はこれを行いましたが、別の で同じものを更新しません。user_iduser_idnameuser_idnameuser_idname

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_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

于 2013-09-19T23:25:10.727 に答える