在MySQL中,我试图复制一行自增量列ID=1,并将数据插入到相同的表中,作为列ID=2的新行。

如何在单个查询中做到这一点?


当前回答

insert into MyTable(field1, field2, id_backup)
    select field1, field2, uniqueId from MyTable where uniqueId = @Id;

其他回答

假设表是user(id, user_name, user_email)。

你可以使用这个查询:

INSERT INTO user (SELECT NULL,user_name, user_email FROM user WHERE id = 1)

转储您想要sql的行,然后使用生成的sql,减去ID列,将其导入。

您还可以传入'0'作为列的值来自动递增,在创建记录时将使用正确的值。这比临时表简单多了。

来源: 复制MySQL中的行 (见TRiG对第一个解的评论,Lore)

CREATE TEMPORARY  TABLE IF NOT EXISTS  `temp_table` LIKE source_table;
DELETE FROM `purchasing2` ;
INSERT INTO temp_table SELECT * FROM source_table where columnid = 2;
ALTER TABLE temp_table MODIFY id INT NOT NULL;
ALTER TABLE temp_table DROP PRIMARY KEY;
UPDATE temp_table SET id=NULL ;
INSERT INTO source_table SELECT * FROM temp_table;
DROP TEMPORARY  TABLE IF EXISTS  temp_table ; 

这有助于,它支持BLOB/TEXT列。

CREATE TEMPORARY TABLE temp_table
AS
SELECT * FROM source_table WHERE id=2;
UPDATE temp_table SET id=NULL WHERE id=2;
INSERT INTO source_table SELECT * FROM temp_table;
DROP TEMPORARY TABLE temp_table;
USE source_table;