3

レコードでいっぱいのテーブルAがあります。同じ列のテーブルBを作成し、Aのすべての内容をBにコピーしたいのですが、テーブルAには自動インクリメントキーがあるため、最初の3つのレコード(1、'itemA')(2、'itemB ')(5、' itemE')(後で削除される3,4,5と仮定)。これらのレコードは、(1、'itemA')(2、'itemB')(3、'itemE')としてテーブルBに挿入されます。それらをまったく同じように挿入する方法はありますか?

もう1つは、テーブルAがmySqlにあり、テーブルBがMSSQLServerにあることです。

4

4 に答える 4

7

AFAIK mysqlでは、auto_incrementフィールドに挿入できるため、次のようなステートメントを使用できます。

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

ただし、後で、生成されたauto_incを使用してテーブル値に挿入する必要がある場合は、table1のauto_incの値を使用してtable2にauto_incrementを設定する必要があります。

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

名前test2と列(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 に答える