我有一张表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上
答案 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)
答案 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;