2012-04-14 41 views
1

我有一个表充满记录。我创建了具有相同列的表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上

+1

表的表php _and_ vb.net?真?如果你的问题与这些编程语言无关,为什么要用它们标记呢? – Oded 2012-04-14 18:00:51

回答

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。谢谢大家:)

7

据我所知的MySQL允许插入AUTO_INCREMENT领域,所以你可以使用的语句像

insert into table2 (id, name) select id, name from table1 

但后来,如果你需要插入与产生auto_inc表中的值,则需要在表2组AUTO_INCREMENT与表1

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

我不认为你需要改变AUTO_INCREMENT的值,它通常会有一个max(自动增量列)+ 1的值。http://sqlfiddle.com/#!2/9a453/1 – 2012-04-15 07:53:54

+0

感谢你的帮助 – Haz 2012-04-15 10:54:47

+0

第二个声明不适用于mySql – Haz 2012-04-15 20:06:05

4

是的auto_inc的价值。上述

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

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

+1

感谢您的帮助..这只适用于您设置IDENTITY_INSERT关闭后 – Haz 2012-04-15 10:54:06

0

在用名称测试和列(ID AUTOINC,COL1,COL2,COL3) 在用名称测试2和列(ID AUTOINC,COL4,COL5,COL6)

INSERT INTO test(col4, col5, col6) SELECT col4, col5, col6 FROM test2; 
相关问题