2016-01-07 31 views
2

我有2個表中的數據,這樣MySQL在查詢

Table 1 
no| name | address | 
1 | alex | br st | 
2 | ujang | cilala | 
3 | adu  | lind st | 
4 | ujang | bilila | 
5 | ujang | gea  | 

Table 2 
no| name | address | 
1 | alex |   | 
2 | ujang |   | 
3 | adu  |   | 
4 | adu  |   | 

我的查詢是這樣的

UPDATE TABLE1 a 
JOIN TABLE2 b ON a.name = b.name 
SET a.address = b.address 

結果,我想

Table 2 
    no| name | address | 
    1 | alex | br st | 
    2 | ujang | cilala | 
    3 | adu  | lind st | 
    4 | adu  | lind st | 

這所有的雙數據I沒有話要說,我凍結了。

+0

關於重複項,您如何處理第一個表中可能存在多個匹配名稱的可能性?如果你能向我們表達這一點,我們可以給你一個答案。 –

+0

如果第一個表中的名稱匹配,是否要更新第二個表的地址? –

+0

也許你想檢查http://www.mysqltutorial.org/mysql-update-join/開始。 –

回答

2

下面的查詢更新TABLE2來自TABLE1的記錄的最小值爲nonameTABLE1中可能出現多次。

UPDATE TABLE2 a 
INNER JOIN 
(
    SELECT t1.no, t1.name, t1.address 
    FROM TABLE1 t1 
    INNER JOIN 
    (
     SELECT name, MIN(no) AS no 
     FROM TABLE1 
     GROUP BY name 
    ) t2 
    ON t1.name = t2.name AND t1.no = t2.no 
) b ON a.name = b.name 
SET a.address = b.address 
+0

我會試試這個,謝謝 – Sae

+0

我有MySQL的答案「在字段列表中的位置名稱是不明確的」,我仍然嘗試。 – Sae

+0

@SAE對不起,我錯過了一個表別名。請再試一次。 –

0

至於你提到我想你想從tabel1表2中的所有地址,所以如果你想要的請您用這個查詢:使用只包含一個臨時表

UPDATE TABLE1 a JOIN TABLE2 b ON a.name = b.name SET b.address = a.address 
0

像這樣使用。

UPDATE table2 
SET 
table2.address = table1.address 

FROM table1, table2 
WHERE table1.name = table2.name