2016-08-29 16 views
0

古いテーブルのデータを2つの異なるテーブルに移行しようとしています。次のようなことをする方法があるのなら、私は好奇心が強いです。複数のテーブルに選択結果を挿入する

INSERT INTO table1(v1, v2) 
INSERT INTO table2(LAST_INSERT_ID(), v3) 
SELECT v1, v2, v3 FROM old_table 

この手順を記述する必要はありますか?

+0

これはできません。私は、プロシージャを書くか、値を挿入するテーブルごとに別々にクエリを実行することをお勧めします。 –

+0

[Mysqlはmuti-insertをサポートしていません](http://stackoverflow.com/questions/3860280/sql-insert-into-multiple-tables-in-one-query) –

+0

@MatthiasBurger 2番目のインサートでは、最初のものからのid。 – kechapito

答えて

2

いいえ、不可能です。 2つの独立した挿入ステートメントを発行する必要があります。

INSERT INTO table1(v1, v2) 
SELECT v1, v2, v3, v4 FROM old_table; 

INSERT INTO table2(v3, v4) 
SELECT v1, v2, v3, v4 FROM old_table; 

これをトランザクションでラップすることができます。

しかし、より高度なニーズがあり、手動で入力したくない複数のテーブルに同じデータを挿入している場合は、プロシージャ内にループを記述し、テーブル名と列名を提​​供する動的ステートメントを実行できます。 INFORMATION_SCHEMAテーブルを開始するのがよいでしょう。

関連する問題