2012-05-03 21 views
4

我有這個樣子如何使用WHERE子句將數據從一個表複製到另一個表?

TABLE1兩個表: idvaluenumber

TABLE2idnamevaluerid

我想將value從表2可以複製到TABLE1其中TABLE2.rid = TABLE1.id。我曾嘗試以下:

INSERT INTO TABLE1 (value) SELECT value FROM TABLE2 WHERE TABLE2.rid=TABLE1.id. 

,因爲我還沒有加入Table 1和Table我不能做到這一點但是 - 如果我嘗試這樣做,我得到一個語法錯誤。任何幫助,將不勝感激。

+0

你會得到什麼樣的錯誤? –

回答

2
UPDATE table2 t2 
INNER JOIN table1 t1 
    ON t2.rid=t1.id 
SET t2.value = t1.value; 
6

您需要使用JOIN子句的UPDATE語句而不是INSERT語句,因爲你已經在兩個表中的數據,你想從一個表中的列之一的值複製到另一個。

​​

腳本

CREATE TABLE table1 
( id   INT NOT NULL 
    , value  INT NOT NULL 
    , number INT NOT NULL 
); 

CREATE TABLE table2 
(  id  INT   NOT NULL 
    , name VARCHAR(30) NOT NULL 
    , value INT   NOT NULL 
    , rid  INT   NOT NULL 
); 

INSERT INTO table1 (id, value, number) VALUES 
    (1, 0, 111), 
    (2, 0, 222), 
    (3, 0, 333), 
    (4, 10, 444); 

INSERT INTO table2 (id, name, value, rid) VALUES 
    (1, 'abc', 123, 1), 
    (2, 'def', 345, 2), 
    (3, 'efg', 456, 3), 
    (4, 'ghi', 567, 4); 

UPDATE  table1 
INNER JOIN table2 
ON   table1.id  = table2.rid 
SET   table1.value = table2.value; 

數據之前運行更新

table1: 
ID VALUE NUMBER 
-- ----- ------ 
1  0 111 
2  0 222 
3  0 333 
4 10 444 

table2: 
ID NAME VALUE RID 
-- ---- ----- --- 
1 abc 123 1 
2 def 345 2 
3 efg 456 3 
4 ghi 567 4 

數據運行更新

table1: 
ID VALUE NUMBER 
-- ----- ------ 
1 123 111 
2 345 222 
3 456 333 
4 567 444 

table2: 
ID NAME VALUE RID 
-- ---- ----- --- 
1 abc 123 1 
2 def 345 2 
3 efg 456 3 
4 ghi 567 4 
+0

針對SQL小提琴的+1 –

相關問題