Search code examples
mysqlsqlinsertcopy

How to copy a row and insert in same table with a autoincrement field in MySQL?


In MySQL I am trying to copy a row with an autoincrement column ID=1 and insert the data into same table as a new row with column ID=2.

How can I do this in a single query?


Solution

  • Use INSERT ... SELECT:

    insert into your_table (c1, c2, ...)
    select c1, c2, ...
    from your_table
    where id = 1
    

    where c1, c2, ... are all the columns except id. If you want to explicitly insert with an id of 2 then include that in your INSERT column list and your SELECT:

    insert into your_table (id, c1, c2, ...)
    select 2, c1, c2, ...
    from your_table
    where id = 1
    

    You'll have to take care of a possible duplicate id of 2 in the second case of course.