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

Haz*_*Haz 2 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上

Ale*_*dov 7

AFAIK mysql允许插入auto_increment字段,所以你可以使用类似的语句

insert into table2 (id, name) select id, name from table1
Run Code Online (Sandbox Code Playgroud)

但后来,如果需要使用生成的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')
Run Code Online (Sandbox Code Playgroud)

  • 我认为您不需要更改 AUTO_INCRMENT 的值,它通常具有 max(自动增量列) + 1 的值。http://sqlfiddle.com/#!2/9a453/1 (3认同)
  • @AndreasWederbrand这通常是不完全正确的。如果要像在第一个表中一样继续在第二个表中使用auto_inc字段,则必须设置相同的值。如果您在第一个表中插入10行,然后建议您删除最后3行。在第一个表中,下一个auto_inc在第二个中将是11-8。这可能还可以,但可能不是。 (2认同)

And*_*and 6

是.

create table b like a;
insert into b select * from a;
Run Code Online (Sandbox Code Playgroud)

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