【问题标题】:MySQL - Export data, and ignore primary key. Then import using auto incrementMySQL - 导出数据,忽略主键。然后使用自动增量导入
【发布时间】:2012-03-23 01:12:35
【问题描述】:

我在自动增量列“id”和列“data”中有一个主键表

表格内容:

id | data
1  | aaaaa
2  | bbbbb
3  | whatever :P
5  | dang
99 | hello

如您所见,共有 5 行。 id 是 1,2,3,5,99(没有 id = 4 或 id = 6 到 98)。

如何导出此表,然后将其导入另一个表(当然结构相同),id 将获得值 1,2,3,4,5 而不是 1,2,3,5,99 .

(或者将它们导入到已经有数据的表中,并且导入的 id 将从该表的 auto_increment 值中获取任何值并继续?)

注意:如果有专门针对 PhpMyAdmin 的解决方案,欢迎。

-抱歉英语不好! (操作随意编辑)

【问题讨论】:

    标签: mysql phpmyadmin auto-increment


    【解决方案1】:

    创建一个具有相同布局的表格。那么:

    INSERT INTO new_table (data) SELECT data FROM old_table;
    

    这只会将数据字段复制到新表中。由于id列是auto_increment,所以会从1往上加id。

    【讨论】:

    • (捂脸)……太明显了!我的心思到哪去了?谢谢你曼特里尔!
    • 那行得通。如果要控制新表中行的顺序,可以使用 ORDER BY 子句:INSERT INTO new_table (data) SELECT data FROM old_table ORDER BY id;
    • @Mantriur :如果表中有多个列怎么办?我也遇到了同样的问题。问题是我有 20 个表,每个表都包含主键,可能是也可能不是外键。每个表中的列可能从 5 到 10 不等。任何解决方案?
    • @Gapchoos:您可以创建任意数量的列,例如:INSERT INTO newTable (column1, column2, column3) SELECT column1, column2, column3 FROM oldTable;。您必须单独修改每个表的查询。
    【解决方案2】:
    INSERT INTO newTable (data) SELECT data FROM oldTable;
    

    【讨论】:

    • 感谢 Travesty3 的回答!虽然 Mantriur 快了几秒钟 :) (我想知道为什么你们都被否决了?-我又投了你一票)
    • @Sharky:是的,他比我快 8 秒,而且他的回答更具描述性。也不知道为什么我们被否决了,但是谢谢!请务必将他的答案也标记为您接受的解决方案!
    • @Sharky 接受其中一个答案也无妨。
    • @tombom 我需要等几秒钟...我在这里等着接受 ;) ...完成
    猜你喜欢
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    • 2013-04-06
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    相关资源
    最近更新 更多