我的表看起来像这样
CREATE TABLE sample
(
id int auto_increment primary key,
W_ID varchar(20),
TC_ID varchar(20),
foo varchar(20),
bar varchar(20)
);
我想在此表中插入一个新行,但如果W_ID和TC_ID的组合已经存在,我想用'foo'和'bar'的新值更新行
我知道这里有很多类似的问题,但我无法理解......
中制作了一个样本我正在使用5.6.11-MySQL - Apache / 2.2.22(Win32)PHP / 5.3.25
答案 0 :(得分:1)
如果您在两列上添加唯一约束,则可以使用on duplicate key update语法。 添加一个独特的约束应该是这样的:
alter table table_name add unique index index_name(col1, col2);
您可以找到更多详细信息here
答案 1 :(得分:1)
您可以创建W_ID和TC_ID组合的唯一键,然后按如下方式对其执行upsert:
CREATE TABLE sample
(
id int auto_increment primary key,
W_ID varchar(20),
TC_ID varchar(20),
foo varchar(20),
bar varchar(20)
);
alter table sample add constraint UNIQUE (W_ID, TC_ID);
INSERT INTO sample
(W_ID, TC_ID,foo,bar)
VALUES ('1', '2','123','123');
INSERT INTO sample
(W_ID, TC_ID,foo,bar)
VALUES ('2', '2','123','123');
INSERT INTO sample
(W_ID, TC_ID,foo,bar)
VALUES ('3', '2','123','123');
INSERT INTO sample
(W_ID, TC_ID,foo,bar)
VALUES ('1', '4','123','123');
INSERT INTO sample
(W_ID, TC_ID,foo,bar)
VALUES ('2', '3','123','123');
INSERT INTO sample
(W_ID, TC_ID,foo,bar)
VALUES ('1', '2','123','123')
ON DUPLICATE KEY UPDATE
`foo` = 'newFoo';
您的搜索结果如下:
ID W_ID TC_ID FOO BAR
1 1 2 newFoo 123
2 2 2 123 123
3 3 2 123 123
4 1 4 123 123
5 2 3 123 123