【问题标题】:Any MySQL command to duplicate rows except for auto_increment column?除了 auto_increment 列之外,任何 MySQL 命令都可以复制行?
【发布时间】:2012-09-19 03:41:18
【问题描述】:

我一直在寻找一种方法来复制一行,并将其插入回表中,但使用不同的 id 值(其类型是自动递增)。

我可以通过手动指定每一列来做到这一点,但由于有很多列,并且将来可以添加或删除这些列,我想使用一些简单的查询来执行此操作,而不必指定每个列名.

【问题讨论】:

    标签: mysql duplicates row


    【解决方案1】:

    试试这个:

    CREATE TEMPORARY TABLE temp_table SELECT * FROM source_table WHERE ...; 
    ALTER TABLE temp_table DROP COLUMN column_with_auto_increment;
    INSERT INTO source_table SELECT * from temp_table; DROP TABLE temp_table;
    

    【讨论】:

    • 嗯,这看起来是个好主意...无论如何,只使用一行命令?我记得也不建议经常使用许多临时表......我认为这个答案给了我一个想法。
    • 恐怕没有其他方法可以不列出所有可能的字段。
    • INSERT 导致错误column count doesn't match value count at row 1 需要更新为:INSERT INTO source_table SELECT NULL, tt.* from temp_table tt;
    【解决方案2】:

    试试

    INSERT INTO new_table (attr1, attr2, attr3) SELECT oldatr1, oldatr2, oldatr3 FROM old_table WHERE <the filter you want>
    

    如果 new_table 和 old_table 相同,它也可以工作。

    【讨论】:

    • 不....正如我在问题中所述,我知道这种方式。我正在寻找的是无需指定每一列的方法。
    • 无论如何,我不喜欢看到那些试图回答的人得到负有用的价值,所以就做了 +1
    猜你喜欢
    • 2018-10-15
    • 2019-10-30
    • 1970-01-01
    • 2021-09-25
    • 2021-09-19
    • 1970-01-01
    • 2020-09-27
    • 2013-05-08
    • 2011-06-08
    相关资源
    最近更新 更多