【问题标题】:MySQL. Two tables, copy one columnMySQL。两张表,复制一列
【发布时间】:2014-05-15 09:03:05
【问题描述】:

我正在学习 MySQL,但遇到了问题。我有两张桌子.. table1 和 table2。 table1 包含多个列,例如 (id, type, id_marca, price) 等,table2 包含多个列,例如 (id, values, .., id_marca)。 我想要和我想做的是: 第一个表中的 id_marca 具有值,第二个表中的 id_marca 具有 NULL 值。 我想将 id_marca.table1 中的值复制到 id_marca.table2 中。基本上将第一个表中的列复制到第二个表中。

我用过

INSERT INTO table2 (id_marca) SELECT  id_marca  FROM table1 ;

但问题如下.. 它在 NULL 值之后插入第一个表中列的值,而不是替换它们。

要更好地了解问题: 这是表 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) SELECT id_marca FROM table1 后,表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

希望你能理解,提前谢谢你们。

【问题讨论】:

  • 是的,你正在插入,所以它添加了你可能正在寻找更新的新行,我想它是 stackoverflow.com/questions/23671959/… 的延续
  • @AbhikChakraborty 不,这不是那个的延续。不同的东西。 :)
  • 我的意思是继续,您现在在第二个表中添加 id_marca 以加入表 :)
  • @AbhikChakraborty 哦,是的。

标签: mysql sql database


【解决方案1】:

您应该使用 UPDATE 而不是 INSERT,如果这些表是通过 ID 字段逻辑链接的,请尝试:

UPDATE TABLE2 a 
    JOIN TABLE1 b ON a.id = b.id
SET a.id_marca = b.id_marca

【讨论】:

  • 问题是这个 OP 之前已经发布过这个,他在表之间没有关系,我们建议他建立一个关系来加入。所以这行不通。
【解决方案2】:

上下文

  • MySQL v 5.7
  • 用户希望使用INSERT 将一个表列复制到另一个表
  • 目标是将BEFORE改为AFTER

解决方案

  • 这可以使用 MySQL INSERT ON DUPLICATE KEY UPDATE 来完成
  • 此方法将插入新记录,并且还会更新具有匹配 ID 的现有记录

示例

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
;

另见

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 2020-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多