在SQL Server中用另一个表的列更新表的列

时间:2019-03-23 13:53:15

标签: sql-server

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

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

  • D1,D2是两个不同的数据库
  • T1是桌子
  • C1,C2,C3是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相同。两者都具有完全相同的架构。只是名称和数据不同。两个数据库都在同一台服务器上。

3 个答案:

答案 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原因支持跨数据库查询,因此可以执行以下操作:

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