当前位置: 首页 > 面试题库 >

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

颛孙铭
2023-03-14
问题内容

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

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


 类似资料:
  • 问题内容: 我要寻找正确的语法和方式做直接从SQL如下:插入或更新(如果数据已经内部存在)从包含在数据与两者都具有相同的复合主键。 这两个表的定义为: 将定期删除并填充。 因为相同的定义,但将包含数据的更多的行和我需要的是从插入从未见过值入,并更新现有的行。 我曾经做过这种插入,但是我不知道如何处理更新和复合主键: 编辑:我正在使用 SQL Server 9.00.5000 编辑:另一种受MERG

  • 问题内容: 我想从一个表中读取所有数据,然后将一些数据插入到另一个表中。我的查询是 但我有一个错误 请帮我。 问题答案: 您可以使用INSERT … SELECT语法。请注意,您可以在SELECT部分​​中直接引用“ 1”。

  • 问题内容: 我有这段代码可以从“ jobseeker”表中选择所有字段,并可以通过将userType设置为“ admin”来更新“ user”表,其中userID =$ userID(此userID是我用户中的一个用户数据库)。然后,该语句应将这些值从“ jobseeker”表插入到“ admin”表中,然后从“ jobseeker表”中删除该用户。sql表很好,我的语句正在将userType更改

  • 我试图在从一个表创建一个值后将其插入另一个表我有两个数据库“mem”和“location” 我想从mem表中添加主键id,并将其插入到位置表中的user_id列中。 我有一个sql查询在我的注册表单页面,自动递增'id'在mem表中,但似乎没有添加相同的值到位置表中的user_id, 有人能帮忙吗!

  • 问题内容: 我想知道是否有一种方法可以完全在sql中执行此操作: 注意: q1将返回约3万行。 有什么办法可以在直式sql中完成上述操作?要直接从一个表(基本上是原始数据表)中提取数据并插入到另一个表(基本上是已处理数据表)中? 问题答案:

  • 问题内容: 我正在尝试根据另一个MySQL信息更新一个MySQL表。 我的桌子看起来像: 而表如下所示: 我想更新在与来自基于(存储在字符串字段)。 希望更新后的表如下所示: 我有一个有效的查询,但是非常慢: 这使我的CPU耗尽,最终导致超时,并且仅执行了一部分更新(有数千个要匹配的值)。我知道匹配的速度会很慢,但这是我必须将它们匹配在一起的唯一数据。 有没有更好的方法来更新这样的值?如果可以更快