将表复制到另一个表但保留相同的自动增量键

时间:2012-04-14 17:57:25

标签: mysql sql auto-increment

我有一张表A,里面有记录。我创建了一个具有相同列的表B,我想将A的所有内容复制到B.但是,表A有一个自动递增的键,所以如果我有前三个记录(1,'itemA')(2,'itemB ')(5,'itemE')(假设3,4,5之后删除)。这些记录将作为(1,'itemA')(2,'itemB')(3,'itemE')插入表B中。 有没有办法将它们完全相同?

另一件事是,表A在mySql上,表B在MS SQL Server上

4 个答案:

答案 0 :(得分:7)

AFAIK mysql允许插入auto_increment字段,因此您可以使用类似

的语句
insert into table2 (id, name) select id, name from table1

但稍后,如果需要使用生成的auto_inc插入表值,则需要在table2中设置auto_increment,其值为table1的auto_inc

alter table table2 AUTO_INCREMENT = (SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA = $dbName AND TABLE_NAME = 'table1')

答案 1 :(得分:5)

create table b like a;
insert into b select * from a;

http://sqlfiddle.com/#!2/a344a/1

答案 2 :(得分:3)

上面的答案都很好,但是在MS SQL上你不能插入自动增量值,除非你执行转到identiy_insert:

  

SET IDENTITY_INSERT stock OFF;

     

INSERT INTO stock ( stock_id,stock_item) VALUES (5,'itemE');

     

SET IDENTITY_INSERT stock ON;

这是我正在寻找的EXCATLY。谢谢大家:))

答案 3 :(得分:0)

在名称为test和列的表中(id autoinc,col1,col2,col3) 在名为test2和列的表(id autoinc,col4,col5,col6)

INSERT INTO test(col4, col5, col6) SELECT col4, col5, col6 FROM test2;