首页 > 解决方案 > 用 SQL Server 中另一个表的列更新表的列

问题描述

我正在尝试将列从一个表更新到不同数据库的另一个表。

我在堆栈上搜索,但找到了 PostgreSQL 和 SQLite 的答案。这些代码在 SQL Server 中不适合我。

说,

我想像这样更新

UPDATE T1 
SET D2.T1.C1 = D1.T1.C1
WHERE D2.T1.C2 = D1.T1.C2

除该where子句外的所有内容都可以正常工作。

这是我尝试的一些代码:

use DB2
GO

UPDATE TABLE1 
SET COL1 = (SELECT COL1 FROM DB1.dbo.TABLE1) 
WHERE COL2 = DB1.dbo.TABLE1.COL2

我该如何写这个查询?

注意: D1 和 D2 相同。两者都具有完全相同的架构。只是名称和数据不同。两个数据库都在同一台服务器上。

标签: sql-server

解决方案


SQL Server 支持更新连接语法:

UPDATE t1
SET COL1 = t2.COL1
FROM TABLE1 D1.t1
INNER JOIN TABLE2 D2.t2
    ON t1.COL2 = t2.COL2;

实际上,您当前的方法可能有效,但您应该尝试将其更改为:

UPDATE TABLE1 D1.t1
SET COL1 = (SELECT t2.COL1 FROM TABLE2 D2.t2 WHERE T1.COL2 = T2.COL2);

推荐阅读