2012-01-28 106 views
0

這可能很難理解,所以讓我知道是否需要更好地描述它。說我有3個表TABLEA,tableB的,和表C語法如下:mysql表格移動插入

CREATE TABLE tableA (
    data_point_1 VARCHAR(30), 
    data_point_2 VARCHAR(30), 
    data_point_3 VARCHAR(30) 
); 

CREATE TABLE tableB (
    bid INTEGER AUTO_INCREMENT, 
    cid INTEGER AUTO_INCREMENT, 
    data_point_1 VARCHAR(30), 
); 

CREATE TABLE tableC (
    cid INTEGER AUTO_INCREMENT, 
    data_point_2 VARCHAR(30), 
    data_point_3 VARCHAR(30) 
); 

現在我想要做的就是從表A傳輸數據到tableB的並表C。因此,在本質上我想是這樣的:

INSERT INTO tableB 
SELECT 
    data_point_1, 
    (SELECT cid FROM tableC WHERE (INSERT INTO tableC SELECT data_point_2, data_point_3 FROM tableA)) 
FROM tableA 

我沒試過上面,但我猜想這是不可能的,因爲INSERT不返回的實際值(我需要一個選擇我假設) ,但我的問題變成如何插入數據從A把它放入C,然後在同一時間從C抓取ID和A的另一個數據點,並將這兩個數據點放入B.

我想我可能會破壞它分成2個插入語句,然後在C上進行選擇,其中data_point_2 = data_point_2和data_point_3 = data_point_3,但是我想知道是否有一種方法可以在一個查詢中執行?我找不到任何東西,所以我想我會在這裏問。

同樣:我不想要2個單獨的插入查詢。我希望能夠做到這一點的1(原因理論上我可能需要抽象它還)

+0

沒有人有迴應嗎?仍然沒有看到這樣做的一種可行的方式... – 2012-02-15 16:36:17

+0

你可能會問不可能的事情(無論如何MySQL)。我不確定你所關心的是什麼,但是你可以研究交易是如何工作的。他們是一種可以讓許多陳述幾乎「一次發生」的方式。 – Andrew 2012-02-15 17:07:23

+0

從外觀上看,它可能是不可能的,因爲沒有人能找到解決方案。謝謝=/ – 2012-02-17 01:50:25

回答

0

的解決方案看起來是有沒有解決方案= /猜我必須做多個插入。謝謝各位的幫助。

0

你可以做ITIN兩份報表列如下:

INSERT INTO TableB(data_point_1) SELECT data_point_1 FROM TableA 
INSERT INTO TablEc(data_point_2,data_point_3) SELECT data_point_2, data_point_3 FROM TableA 
+0

這不起作用,因爲它無法將tableB指向tableC。我們需要確保tableB.cid映射到tableC中的正確行。正如我已經提到,我已經知道如何做2插入...我想知道是否有可能在一個查詢語句。 – 2012-01-28 17:01:08