在MySQL中复制行

14 mysql sql

我想复制一行的所有列,但不必指定每一列.我知道http://dev.mysql.com/doc/refman/5.1/en/insert-select.html上的语法,但我认为无法忽略列.

对于我的示例,我试图将行的所有列复制到新行,但主键除外.

有没有办法做到这一点,而不必写入查询与其中的每个字段?

小智 16

如果您的id主键列是主键,则auto_increment可以使用临时表:

CREATE TEMPORARY TABLE temp_table 
AS 
SELECT * FROM source_table WHERE id='7'; 
UPDATE temp_table SET id='100' WHERE id='7';
INSERT INTO source_table SELECT * FROM temp_table;
DROP TEMPORARY TABLE temp_table;
Run Code Online (Sandbox Code Playgroud)

因此,通过这种方式,您可以复制行id ='7'中的所有数据,然后分配新值'100'(或者任何值超出source_table中当前auto_increment值的范围).

编辑:记住; 在陈述之后:)

  • 将`id`设置为零也有效.在`INSERT`中,插入一个值为'0`的`auto_increment`列,作为下一个值应该是什么. (9认同)

Jos*_*ush 3

如果您不选择全部列,则需要列出要选择的列。复制/粘贴是你的朋友。