【问题标题】:How to copy some column from a table to another mysql如何将某些列从表复制到另一个mysql
【发布时间】:2019-01-09 16:37:41
【问题描述】:

我有两张表,例如:

表 1:

|A|B|C|D|E|F|G|H|I|J|

表 2:

|A|C|D|E|G|H|J|K|L|M|N|O|P|

我必须将表 2 中的一些列复制到表 1。 我尝试的是:

INSERT INTO `table 1` (`C`,`D`,`E`,`G`,`J`)
     SELECT `C`,`D`,`E`,`G`,`J` FROM `table 2` WHERE 
     `table 1`.`A` = `table 2`.`A`;

但结果是:

#1054 - Unknown column 'table 1.A' in 'where clause'

错误在哪里?有人能帮我吗?

我的错误是我不必插入新行,而是更新与 A 列匹配的行...我必须以哪种方式编辑我的查询?谢谢!

【问题讨论】:

    标签: mysql copy


    【解决方案1】:

    试试这个::

    INSERT INTO `table1` (`C`,`D`,`E`,`G`,`J`) VALUES
         (SELECT `C`,`D`,`E`,`G`,`J` FROM `table2` WHERE 
         `table1`.`A` = `table2`.`A`);
    

    已编辑::

    如果你只需要更新那么::

        update table1 
        inner join table2 on table1.A = table2.A
        set 
        table1.C=table2.C, 
        table1.D=table2.D,
        table1.E=table2.E, 
        table1.G=table2.G,
        table1.J=table2.J
        WHERE 1=1
        ;
    

    【讨论】:

    • 编辑在更新查询的第一行添加“,table2”。
    • @SashiKant 您的 UPDATE 查询是否经过测试?我已经对其进行了修改以适合我的数据库表,但它因错误而失败:#1054 - Unknown column '{table2}.{appropriateprimaryidentifier}' in 'where clause' 我将不得不对此表投反对票,直到它被调整或被证明是正确的。 (我将列从旧副本移动到同一张表的新副本——不会有列冲突,并且表名和主标识符是正确的。)
    • 我最终使用了来自 stackoverflow.com/a/11168786/2943403 的 LEFT JOIN 您应该更新或删除您编辑的内容,因为它不正确。
    • @brett :更新了答案。请检查
    • 我不在电脑前查看,但感谢您的编辑。您应该将所有 mysql 关键字大写,WHERE 1=1 没用。
    【解决方案2】:
    INSERT INTO `table 1` (`A`,`C`,`D`,`E`,`G`,`J`)
    SELECT `t2`.`A`, `t2`.`C`, `t2`.`D`, `t2`.`E`, `t2`.`G`, `t2`.`J`
    FROM `table 2` AS t2
    INNER JOIN `table 1` AS t1
    ON `t2`.`A` = `t1`.`A`
    ON DUPLICATE KEY UPDATE `C` = VALUES(`C`), `D` = VALUES(`D`), `E` = VALUES(`E`), `G` = VALUES(`G`), `J` = VALUES(`J`)
    

    我在您给定的查询中没有看到任何 JOIN。

    ON DUPLICATE KEY UPDATE

    【讨论】:

      猜你喜欢
      • 2021-05-03
      • 2012-08-12
      • 2019-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多