我正在尝试将列从一个表更新为另一数据库的另一表。
我在堆栈上搜索,但是找到了PostgreSQL和SQLite的答案。这些代码在SQL Server中不适用于我。
说
T1
我想更新
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相同。两者都具有完全相同的架构。只是名称和数据不同。两个数据库都在同一台服务器上。
答案 0 :(得分:2)
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);
答案 1 :(得分:0)
您可以简单地使用INNER JOIN
原因sql-server支持跨数据库查询,因此可以执行以下操作:
UPDATE T1
SET T1.Col1 = T2.Col1
FROM DataBase1.Schema.TableName T1 INNER JOIN DataBase2.Schema.TableName T2
ON T1.ID = T2.ID;
请访问并阅读 Cross-Database Queries
。
答案 2 :(得分:0)
或update tableName set column Name = (select columnName from second table where 1=1) i.e condition is either true or false optional though