2012-06-23 117 views
19

在MySQL中,如何將FIELD1與TABLE1中的所有記錄複製到與主鍵對應的TABLE2,例如:EMPLOYEE no。?MYSQL,從一個表複製選定的字段到另一個

+0

表中的字段是什麼?你試過什麼了? –

+0

你想要做一個SELECT INTO語句嗎? –

+0

示例數據請... –

回答

33

試試這個

INSERT INTO `table2` (`field_name2`) SELECT `field_name` FROM `table1` 
+2

這將插入table1到table2的所有數據。 –

+5

鑑於這是公認的答案,我會假設OP發佈了不正確的問題。 – swasheck

39

如果你的意思是你想使用其他表的列更新一個表的列,那麼這裏有一些選擇:

  1. 聯接:

    UPDATE table1 AS t1 
        INNER JOIN table2 AS t2 ON t1.EmpoyeeNo = t2.EmployeeNo 
    SET t1.SomeColumn = t2.SomeColumn 
    

    或者它可能是左連接:

    UPDATE table1 AS t1 
        LEFT JOIN table2 AS t2 ON t1.EmpoyeeNo = t2.EmployeeNo 
    SET t1.SomeColumn = t2.SomeColumn 
    

    這實質上會清空(設置爲NULL)不匹配發生的值。

  2. 子查詢:

    UPDATE table1 
    SET SomeColumn = (
        SELECT SomeColumn 
        FROM table2 
        WHERE EmployeeNo = table1.EmployeeNo 
    ) 
    

    這等同於左加入#1溶液。

注意,在所有情況下,假定在table1行可以匹配不超過一排更table2

+0

謝謝我會試試這個。 – ix3

+0

關於第二個子查詢,我看到這個錯誤:'你無法在FROM子句中指定目標表'table2'進行更新,你知道什麼可能導致這個嗎? Thx –

+0

@SSHThis:不,你可能不能。而我沒有。 [看,它沒有問題](http://sqlfiddle.com/#!2/f5423/1)。 –

17

的複製數據從一個表到另一個查詢是:

Insert into table2 (field1, field2) select field1, field2 from table1 


如果你只想複製選定的值,然後使用其中的查詢

Insert into table2 (field1, field2) select field1, field2 from table1 where field1=condition 


條款

+0

感謝您展示如何一次移動多個:) – JoshP

3
update 
    table1 t1 
    join table2 t2 on t2.field = t1.field 
set 
    t1.field1 = t2.matchingfield 
where 
    t1.whatever = t2.whatever 
+0

這只是解決了我的1周頭痛。謝謝你的朋友 – bademba

+0

yea wierd,每個人都說不同的東西..這個作品 – brigitte18

0

您可以用這個條件將table1中的所有記錄複製到table2中。

Insert into table2 select * from table1 where field1=condition 
-3

INSERT INTO table_1column-1column-2)SELECT柱1,柱2 FROM TABLE_2;

+1

這個問題已經收到了很多答案。請將您的答案與其他答案進行比較,並嘗試查看您的答案是否爲**新**。如果是這樣,請解釋原因,因爲這對我並不明顯 –

相關問題