In MySQL, can I copy one row to insert into the same table?

后端 未结 26 2329
-上瘾入骨i
-上瘾入骨i 2020-11-27 09:56
insert into table select * from table where primarykey=1

I just want to copy one row to insert into the same table (i.e., I want to duplicate an ex

26条回答
  •  暖寄归人
    2020-11-27 10:21

    Create a table

        CREATE TABLE `sample_table` (
           `sample_id` INT(10) unsigned NOT NULL AUTO_INCREMENT,
           `sample_name` VARCHAR(255) NOT NULL,
           `sample_col_1` TINYINT(1) NOT NULL,
           `sample_col_2` TINYINT(2) NOT NULL,
    
          PRIMARY KEY (`sample_id`),
          UNIQUE KEY `sample_id` (`sample_id`)
    
        ) ENGINE='InnoDB' DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
    

    Insert a row

    INSERT INTO `sample_table`
       VALUES(NULL, 'sample name', 1, 2);
    

    Clone row insert above

    INSERT INTO `sample_table`
       SELECT 
        NULL AS `sample_id`, -- new AUTO_INCREMENT PRIMARY KEY from MySQL
        'new dummy entry' AS `sample_name`,  -- new UNIQUE KEY from you
        `sample_col_1`, -- col from old row
        `sample_col_2` -- col from old row
       FROM `sample_table`
       WHERE `sample_id` = 1;
    

    Test

    SELECT * FROM `sample_table`;
    

提交回复
热议问题