小编典典

从MySQL中的另一个表插入或更新

sql

我有两个表,具有相同的架构-

create table test1 (
a INT NOT NULL ,
b INT NOT NULL ,
c INT,
PRIMARY KEY (a,b)
);

create table test2 (
a INT NOT NULL ,
b INT NOT NULL ,
c INT,
PRIMARY KEY (a,b)
);

我想将test2表中的值插入到test1中,但是如果具有相同主键的行已经存在,请对其进行更新。我知道在mysql中,您可以使用ON DUPLICATE
KEY UPDATE做类似的事情-

INSERT INTO test1 VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=3;

但是我不知道如何使用另一个表中的SELECT来执行上述查询。我正在寻找的是表格查询-

INSERT INTO test2 
SELECT a, b, c FROM test1
ON DUPLICATE KEY UPDATE c = c + t.c 
(Select a, b, c from tests1)t;

该查询显然是无效的。如果有人可以从中提出有效的查询,我将不胜感激。


阅读 182

收藏
2021-04-07

共1个答案

小编典典

这应该为您工作:

INSERT INTO test2 
SELECT a, b, c as c1 FROM test1
ON DUPLICATE KEY UPDATE c = c + c1
2021-04-07