【问题标题】:put values from database2 to my current database将database2中的值放入我当前的数据库
【发布时间】:2009-04-03 04:32:33
【问题描述】:

我有一个名为 database1 的数据库,它包含一个员工姓名的表 在员工表中有许多字段,如员工、姓名、工资等。

我错误地将所有员工的工资值更改为 0。

我正在通过名称 database2 从备份中恢复数据库

现在我需要帮助来更新我当前的数据库,即 database1

我想将表employee 中的Salary 列的值从database2 放到我当前的数据库中,即database1 在同一个employee 表salary 列中。

在两个员工表中都通用,它包含员工列,这是通用的。

使用 sql 2005 服务器

【问题讨论】:

  • 也许指定你的数据库?
  • 哪个 DBMS - 正如 Mitch 所问的那样。因为数据库间的符号是完全非标准化的,因此它非常重要。

标签: sql sql-server database sql-server-2005


【解决方案1】:
UPDATE database1.employees
SET salary = e2.salary
FROM database1.employees AS e1
INNER JOIN database2.employees AS e2
    ON e2.employeecode = e1.employeecode

【讨论】:

  • Msg 208, Level 16, State 1, Line 1 无效的对象名称'database1.employees'。
  • 尝试添加 dbo。在表名中,因此它是 databasename.dbo.tablename(例如 database1.dbo.employees)当然假设 dbo 拥有您的表...
【解决方案2】:

你需要做一个跨数据库查询,下面是一个例子。

假设

  1. 这是在 Database1 上使用有权访问 Database2 的帐户运行的
  2. dbo 架构中 Database2 上的表
  3. 您拥有所有内容的完整备份
  4. EmployeeId 字段是表中的主键

查询 此查询可在 MS SQL Server 上运行,并且已经过测试,但请务必备份以防万一!!

UPDATE Employee 
SET Salary = b.Salary
FROM Employee A
    INNER JOIN database2.dbo.Employee B
        ON (A.EmployeeId = B.EmployeeId)

【讨论】:

  • Msg 4104, Level 16, State 1, Line 1 无法绑定多部分标识符“A.salary”。
猜你喜欢
  • 1970-01-01
  • 2011-09-08
  • 1970-01-01
  • 2015-04-04
  • 1970-01-01
  • 2015-07-31
  • 1970-01-01
  • 1970-01-01
  • 2021-07-13
相关资源
最近更新 更多