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

标签 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;

这个查询显然是无效的。如果有人可以从中进行有效查询,我将不胜感激。

最佳答案

这应该适合你:

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

关于mysql - 从 mysql 中的另一个表插入或更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23020591/

相关文章:

.net - .NET 中的多态关联

php - 查找与多列搜索查询匹配的列名

javascript - 使用php没有记录列时如何禁用按钮?

php - 大流量下的网站PHP+MySQL

php - 如何将 php 变量传递给同一页面中的另一个表单?

android - 数据库数据变化时ListView新增数据没有直接显示

sql - 如何从临时表中检索字段名称 (SQL Server 2008)

sql - 如何使用 SQL Server 完成此任务

php - 合并两个 MySQL 查询并将结果相减

mysql - 如果连接表中不存在则显示 0 的 SQL 命令