2013-02-23 134 views
12

我有一個表T1其中包含三列:Id, Name, AddressSQL更新查詢

還有一個表T2其中包含2列Id, New_Address。 欄的T2T1相同。

我需要一個查詢,它將更新AddressT1New_AddressT2

我可以通過檢查ID和執行更新語句通過循環。如何使用查詢來完成?

回答

12

如何

UPDATE T1 
SET Address = T2.New_Address 
FROM T2 
WHERE T1.id = T2.id 
7
UPDATE T1 
SET T1.Address = T2.New_Address 
FROM T1 
INNER JOIN T2 ON T2.ID = T1.ID 
2
UPDATE T1 
SET Address = (select New_Address from T2 where T1.ID=T2.ID); 
+2

這 - 相當於'LEFT JOIN'和 - 也將更新(它們設置爲'NULL')的所有行表1中沒有一表2中的'NewAdress'。 – 2013-02-23 11:55:18

+1

@ypercube - 這個查詢所具有的一個可能的優點是,如果有多個匹配的新地址而不是默默地選擇一個不確定的地址,它會引發錯誤。它可以被重寫爲SET地址= ISNULL((從T2中選擇New_Address,其中T1.ID = T2.ID),Address);'儘管'MERGE'給出了內置的錯誤檢查,並且會更好。 – 2013-02-23 12:12:27