3

我有一个表 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

4 回答 4

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')
于 2012-04-14T18:08:56.483 回答
6

是的。

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

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

于 2012-04-14T18:09:50.520 回答
4

上面的答案很好,但是在 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;

这正是我一直在寻找的。谢谢你们 :)

于 2012-04-15T10:42:18.623 回答
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;
于 2016-01-17T10:11:46.000 回答