2015-06-02 81 views
0

的條件插入行的設置是這樣的:MYSQL:如何在一個表中基於其他兩個表

表A的列遞減和日期

B表中的列遞減,日期和任務

表C具有列keyid和類型。

我想要做的是將表B中的一些行復制到表A,其中A.desc應該是B.desc,而A.date應該是B.date。要選擇要複製哪些行,邏輯是這樣的:「所有行,例如B.task = C.keyid AND C.type ='1'」。

如果我想只選擇複製行,查詢會是這樣:

SELECT B.desc, B.date FROM B,C WHERE B.task=C.keyid AND C.type='1' 

從選擇產生的行需要被複制到A:我知道如何寫的選擇,但我該如何編寫INSERT INTO查詢?

+0

請注意,desc是MySQL中的保留字,對於列/表標識符來說,它通常是一個糟糕的選擇。 – Strawberry

+0

好的。謝謝你的建議。 – aarelovich

回答

1

這個未經測試的查詢應該工作:

insert into tableA (tableA.desc, tableA.data) SELECT B.desc, B.date FROM B,C WHERE B.task=C.keyid AND C.type='1' 
+0

非常感謝! – aarelovich

-1

你可以試試這個:

INSERT INTO table_A (desc, date) 
SELECT B.desc, B.date FROM table_B as B,table_C as C WHERE B.task=C.keyid AND C.type='1' 
0

您可以運行此查詢:

INSERT INTO A(desc, date) 
    VALUES (
     SELECT B.desc, B.date 
     FROM B,C 
     WHERE B.task=C.keyid AND C.type='1' 
    ) 

我希望這將有助於。

相關問題