2016-08-29 60 views
0

我試圖將舊錶中的數據遷移到兩個不同的表中。我很好奇,如果有辦法做下面的事情。將選擇結果插入到多個表中

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

我必須爲此編寫一個過程嗎?

+0

這是不可能的。我建議你編寫一個程序或爲每個要插入值的表分別運行查詢。 –

+0

[Mysql不支持多插入](http://stackoverflow.com/questions/3860280/sql-insert-into-multiple-tables-in-one-query) –

+0

@MatthiasBurger對於第二次插入,我需要從第一個ID。 – kechapito

回答

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桌子將是一個很好的開始。