我有一个表 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 上
我有一个表 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 上
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')
上面的答案很好,但是在 MS SQL 上你不能插入自动增量值,除非你执行 turn identiy_insert off:
SET IDENTITY_INSERT stock OFF;
INSERT INTO stock ( stock_id,stock_item) VALUES (5,'itemE');
SET IDENTITY_INSERT stock ON;
这正是我一直在寻找的。谢谢你们 :)
在名称为 test 和列 (id autoinc, col1, col2, col3) 的表中 在名称为 test2 和列 (id autoinc, col4, col5, col6) 的表中
INSERT INTO test(col4, col5, col6) SELECT col4, col5, col6 FROM test2;