2012-12-05 29 views
2

我需要使用MySQL複製表中的數據,但這些數據與其他表有一對多的關係。如何複製表條目及其依賴關係表的行mysql

表A [1] --------- [N]表B [1] --------- [N]表C

因此,我需要做的是從表1中複製一個條目,並與其他表中的相關數據相同。

我可以做到這一點,如果這是一對一的關係,但我真的不知道如何在這種情況下做到這一點。

回答

0

這是怎麼回事?

INSERT INTO TABLE A1 (COL1, COL2, COL3) 
SELECT * FROM TABLE A 
[WHERE CONDITION] 

INSERT INTO TABLE B1 (COL1, COL2, COL3) 
SELECT B.COL1, B.COL2, B.COL3 
    FROM TABLEB AS B 
    INNER JOIN TABLEA 
    ON [RELATIONSHIP] 
    [WHERE CONDITION] --SAME AS THE FIRST 

    INSERT INTO TABLE C1 (COL1, COL2, cOL3) 
    SELECT C.COL1, C.COL2, C.COL3 
     FROM TABLEC AS C 
     INNER JOIN TABLEB 
     ON [RELATIONSHIP C=B] 
     INNER JOIN TABLEA 
     ON [RELATIONSHIP B=A] 
     [WHERE CONDITION] --SAME AS THE FIRST 

編輯:您可以根據這個自動增量指定值:http://forums.mysql.com/read.php?10,167702,167717#msg-167717

+0

喜卡夫卡,感謝您的答覆。這工作很好,當我複製表A和B的數據,但我如何得到它複製表C的數據?第三條插入語句必須如何複製表B中與表B相關的數據? – Ricky

+0

編輯包括表C – 2012-12-06 14:22:32

+0

我創建了一個小型數據庫與3個表來簡化這個測試,我得到了以下錯誤:'無法添加或更新子行外鍵約束失敗mysql'爲tableA和tableC。 如果我有辦法獲取每個插入的tableB行的last_insert_id()並使用它tableC插入語句它將解決我的問題。所以我認爲...: -/ – Ricky

相關問題