Sql更新查询[重复]

Posted

技术标签:

【中文标题】Sql更新查询[重复]【英文标题】:Sql Update Query [duplicate] 【发布时间】:2013-02-09 00:10:53 【问题描述】:

我有一个表T1,其中包含三列:Id, Name, Address

还有另一个表T2,其中包含两列Id, New_AddressT2Id 列与 T1 的列相同。

我需要一个查询,它会将T1Address 列更新为T2New_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 语句 - 在插入/更新查询之间切换 [重复]

如何在 SQL Server 2008 中通过单个查询更新两个表 [重复]

SQL查询语法错误,使用另一个表的数据更新表[重复]

需要为 SQL Server 中另一个值重复的记录更新一列 [重复]

SQL重复数据只显示一条,查询语句怎么写

来自 UPDATE 查询的“SQL 命令未正确结束”错误 [重复]