MySQL。两个表,复制一列

MySQL。两个表,复制一列,mysql,sql,database,Mysql,Sql,Database,我正在学习MySQL,我有一个问题。我有两张桌子。。表1和表2。 表1包含多个列,如(id、type、id\u marca、price)等,表2包含多个列,如(id、value、…、id\u marca)。 我想要的和我正在尝试的是: 第一个表中的id_marca有值,第二个表中的id_marca有空值。 我想将id_marca.table1中的值复制到id_marca.table2中。基本上将第一个表中的列复制到第二个表中 我曾经 INSERT INTO table2 (id_marca) S

我正在学习MySQL,我有一个问题。我有两张桌子。。表1和表2。 表1包含多个列,如(id、type、id\u marca、price)等,表2包含多个列,如(id、value、…、id\u marca)。 我想要的和我正在尝试的是: 第一个表中的id_marca有值,第二个表中的id_marca有空值。 我想将id_marca.table1中的值复制到id_marca.table2中。基本上将第一个表中的列复制到第二个表中

我曾经

INSERT INTO table2 (id_marca) SELECT  id_marca  FROM table1 ;
但问题是。。它在空值之后插入第一个表中列的值,并且不替换它们

为了更好地看待这个问题: 这是表1:

id    name    id_marca
1      a         1
2      b         1 
3      c         2
这是表2:

id   value   id_marca
1      123         NULL
2      34155       NULL
3      123         NULL
在我执行INSERT INTO table2(id_marca)后,从表1中选择id_marca,表2变为:

id   value   id_marca
1      123         NULL
2      34155       NULL
3      123         NULL
4       0            1
5       0            1
6       0            2
但我希望它是:

id   value   id_marca
1      123         1
2      34155       1
3      123         2

希望您能理解,提前谢谢各位。

您应该使用UPDATE not INSERT,如果这些表通过ID字段进行逻辑链接,请尝试:

UPDATE TABLE2 a 
    JOIN TABLE1 b ON a.id = b.id
SET a.id_marca = b.id_marca
上下文
  • MySQL V5.7
  • 用户希望使用
    INSERT
  • 目标是将之前的更改为之后的

解决方案
  • 这可以使用MySQL
    INSERT ON DUPLICATE KEY UPDATE
  • 此方法将插入新记录,并且还将更新具有匹配ID的现有记录
例子 另见

是的,您正在执行insert,因此它添加了新行。您可能正在寻找更新,我想它是@AbhikChakraborty的延续。不,它不是@AbhikChakraborty的延续。不同的事情。:)我的意思是继续,你现在在第二个表中添加id_marca来加入表:)@AbhikChakraborty哦,是的。问题是这个OP之前已经发布了这个,他在表之间没有关系,我们建议他建立一个关系来加入。所以这是行不通的。
INSERT INTO zzdemo_table02
  (lname,userid)
SELECT
  lname,userid
  FROM(
    SELECT
      lname,userid
    FROM
      zzdemo_table01
  ) as tt01
ON DUPLICATE KEY UPDATE
  userid=tt01.userid
  ,lname=tt01.lname
;