我有一個表T1
其中包含三列:Id, Name, Address
SQL更新查詢
還有一個表T2
其中包含2列Id, New_Address
。 欄的T2
與T1
相同。
我需要一個查詢,它將更新Address
列T1
與New_Address
的T2
。
我可以通過檢查ID和執行更新語句通過循環。如何使用查詢來完成?
我有一個表T1
其中包含三列:Id, Name, Address
SQL更新查詢
還有一個表T2
其中包含2列Id, New_Address
。 欄的T2
與T1
相同。
我需要一個查詢,它將更新Address
列T1
與New_Address
的T2
。
我可以通過檢查ID和執行更新語句通過循環。如何使用查詢來完成?
如何
UPDATE T1
SET Address = T2.New_Address
FROM T2
WHERE T1.id = T2.id
UPDATE T1
SET T1.Address = T2.New_Address
FROM T1
INNER JOIN T2 ON T2.ID = T1.ID
UPDATE T1
SET Address = (select New_Address from T2 where T1.ID=T2.ID);
這 - 相當於'LEFT JOIN'和 - 也將更新(它們設置爲'NULL')的所有行表1中沒有一表2中的'NewAdress'。 – 2013-02-23 11:55:18
@ypercube - 這個查詢所具有的一個可能的優點是,如果有多個匹配的新地址而不是默默地選擇一個不確定的地址,它會引發錯誤。它可以被重寫爲SET地址= ISNULL((從T2中選擇New_Address,其中T1.ID = T2.ID),Address);'儘管'MERGE'給出了內置的錯誤檢查,並且會更好。 – 2013-02-23 12:12:27