【问题标题】:MYSQL Duplicate entry 1 for key 'PRIMARY' when importing to another table导入到另一个表时,MYSQL 键“PRIMARY”的重复条目 1
【发布时间】:2015-07-21 09:16:20
【问题描述】:

我正在尝试将一些值从一个表导入另一个表,问题是这两个表有一个主列 id

所以当我做INSERT INTO tab1 (SELECT * FROM tab2)

键“PRIMARY”的条目 1 重复

它说我不能,因为 id 1 已经存在, 我真的不在乎保存id,我只想在tab1的末尾插入它

所以我有 id 来执行此操作(没有 id 列):

INSERT INTO tab1 (SELECT col2,col3 FROM tab2)

...等等,但它说 列数与第 1 行的值计数不匹配

我怎样才能只插入带有新 id 的所有内容?

提前致谢

【问题讨论】:

  • 尝试使用扩展的 INSERT 版本,首先指定要插入的列,然后提供 VALUES。
  • INSERT IGNORE INTO tab1 (SELECT * FROM tab2)。重复的将被忽略。或者你可以按照@cen 的建议去做,这就是我会做的。
  • 如果您不关心该列是否唯一,请从中删除唯一约束。

标签: mysql


【解决方案1】:

这应该可行:

INSERT INTO table1 (col2, col3) SELECT table2.anothercol2, table2.anothercol3 FROM table2;

https://dev.mysql.com/doc/refman/5.0/en/insert-select.html

【讨论】:

    【解决方案2】:

    如果您可以更改表 'tab1' 的结构,您可以在 'tab1' 中设置主字段的自动增量字段,其他两个字段对应于 'tab2'。

    INSERT INTO tab1 (SELECT col2,col3 FROM tab2) 应该可以工作。

    【讨论】:

    • 这仅在id 位于表格末尾时才有效。否则,如 cen 所述,将需要专门针对 insert
    • 它已经在自动递增,但是我说的关于列不匹配的错误...等等
    猜你喜欢
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    • 1970-01-01
    • 2012-08-18
    • 1970-01-01
    • 2019-08-28
    • 2012-08-24
    相关资源
    最近更新 更多