Mysql 如果不存在则插入,如果存在且条件为真则更新
我有一个包含Mysql 如果不存在则插入,如果存在且条件为真则更新,mysql,Mysql,我有一个包含id(主键)、user\u id和name的表。如果用户id与现有的用户ids不同,并且如果用户id相同,但此用户id的名称发生更改,则需要更新名称。如何做到这一点。我已经这样做了,但是它不会为相同的用户id更新,而使用不同的名称 CREATE TABLE test ( id int auto_increment primary key, user_id int, name varchar(60) ); INSERT INTO t
id
(主键)、user\u id
和name
的表。如果用户id
与现有的用户id
s不同,并且如果用户id
相同,但此用户id
的名称发生更改,则需要更新名称。如何做到这一点。我已经这样做了,但是它不会为相同的用户id
更新,而使用不同的名称
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);
以下是sqlfiddle
:您需要将user\u id
声明为UNIQUE
,例如:
CREATE TABLE test
(
id int auto_increment,
user_id int,
name varchar(60),
primary key(id),
unique key(user_id)
);
更新的fiddle:有没有办法不将user\u id设置为唯一的,或者如果我将两列一起设置为唯一的user\u id,您的建议会起作用?@CoKoder您说过如果user\u id
不存在,您想插入一条记录,如果user\u id
存在,则更新。唯一的方法是插入一个insert。。。在重复键上
语句将用户id
声明为唯一。@Mihai你是什么意思?