Sql更新查询

Sql更新查询,sql,sql-server,database,tsql,Sql,Sql Server,Database,Tsql,我有一个表T1,它包含三列:Id、Name、Address 还有另一个表T2,它包含两列Id,New_Address。T2的Id列与T1的Id列相同 我需要一个查询,它将用新的地址T2更新T1的地址列 我可以通过检查ID和执行update语句通过循环来完成。怎样才能用查询来完成呢?怎么样 UPDATE T1 SET Address = T2.New_Address FROM T2 WHERE T1.id = T2.id 这-相当于左联接,并且-还将更新将它们设置为空表1中所有在表2中没有新地址

我有一个表T1,它包含三列:Id、Name、Address

还有另一个表T2,它包含两列Id,New_Address。T2的Id列与T1的Id列相同

我需要一个查询,它将用新的地址T2更新T1的地址列

我可以通过检查ID和执行update语句通过循环来完成。怎样才能用查询来完成呢?

怎么样

UPDATE T1
SET Address = T2.New_Address
FROM T2
WHERE T1.id = T2.id

这-相当于左联接,并且-还将更新将它们设置为空表1中所有在表2中没有新地址的行。@ypercube-但此查询的一个可能优势是,如果有多个匹配的新地址,而不是默默地选择一个不确定的新地址,则会引发错误。它可以重写为SET Address=ISNULLselect New_Address from T2,其中T1.ID=T2.ID,Address;尽管MERGE也内置了这种错误检查功能,但它更可取。
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 );