【问题标题】:Update records only when ID matches仅在 ID 匹配时更新记录
【发布时间】:2010-01-05 23:18:09
【问题描述】:

如何根据当前数据库中的记录更新单独数据库中表中的数据?

例如,我想用数据库“database_new”中包含的值更新名为“database_old”的数据库中的“status”字段。我当前的数据存在于数据库“database_new”中。我只想在 record_id 字段匹配时更新“database_old”数据库中的记录。 “status”和“record_id”字段存在于两个数据库的“products”表中。正如我所说,字段“status”应该使用“database_new”中的值更新,但只有在record_id匹配时才更新。

这是一个 MS SQL 2005 数据库。

【问题讨论】:

  • 两个数据库是否在同一个 SQL Server 实例上?可能在同一服务器上的不同实例上,但更可能是不同服务器上的不同实例...
  • 两个数据库在同一台服务器上
  • @Jeff:您可以在服务器上安装多个 SQL Server 实例。只是说
  • 两个数据库在同一个服务器和同一个 SQL 实例上

标签: sql sql-server sql-server-2005 sql-update


【解决方案1】:
update database_old.dbo.products
set status = new.status
from database_new.dbo.products new
where database_old.dbo.products.record_id = new.products.record_id

【讨论】:

  • +1。请记住,这需要链接服务器在不同的数据库实例上工作
【解决方案2】:

如果两个数据库在同一台服务器上,只需使用 3 部分名称 Database.dbo.TableName。示例:

update old
set old.status = new.status
from database_old.dbo.products old
inner join database_new.dbo.products new
on old.record_id = new.record_id

如果它们位于不同的服务器上,那么您需要有一个链接服务器,然后使用 4 部分名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多