Sql更新查询[重复]
Posted
技术标签:
【中文标题】Sql更新查询[重复]【英文标题】:Sql Update Query [duplicate] 【发布时间】:2013-02-09 00:10:53 【问题描述】:我有一个表T1
,其中包含三列:Id, Name, Address
还有另一个表T2
,其中包含两列Id, New_Address
。 T2
的 Id
列与 T1
的列相同。
我需要一个查询,它会将T1
的Address
列更新为T2
的New_Address
。
我可以通过检查 ID 并执行更新语句通过循环来完成。怎么可以通过查询来完成?
【问题讨论】:
【参考方案1】:怎么样
UPDATE T1
SET Address = T2.New_Address
FROM T2
WHERE T1.id = T2.id
【讨论】:
【参考方案2】:UPDATE T1
SET T1.Address = T2.New_Address
FROM T1
INNER JOIN T2 ON T2.ID = T1.ID
【讨论】:
【参考方案3】:UPDATE T1
SET Address = (select New_Address from T2 where T1.ID=T2.ID );
【讨论】:
这 - 相当于LEFT JOIN
并且 - 还将更新(将它们设置为 NULL
)表 1 中在表 2 中没有 NewAdress
的所有行。
@ypercube - 这个查询确实有一个可能的优点是,如果有多个匹配的新地址而不是默默地选择一个不确定的地址,它将引发错误。它可以重写为SET Address = ISNULL((select New_Address from T2 where T1.ID=T2.ID ),Address);
,尽管MERGE
也提供了内置的错误检查功能,并且更可取。以上是关于Sql更新查询[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 SQL Server 2008 中通过单个查询更新两个表 [重复]