如何从SQL Server 2005的另一个表中的相应数据更新一个表中的数据

我在同一个数据库服务器上的不同数据库中有两个表。

两个数据库都有相同的结构,但数据不同。 Database1(Test1)是最新的,而database2(Test2)是数据库的旧副本。

  • Test1有一个名为Employee的表,有3000条logging
  • Test2有一个名为Employee的表,有1000条logging

我需要从Test2中的同一个表中更新Test1中的表,以获得名为DeptID的特定列,因为Test2 DB(旧的)中的Employee表中的值已更新。 所以我需要从旧数据库中有1000行左右的表中更新新数据库中的表。

换句话说,我需要使用Test2 DB中Employee表的DeptID列中的任何值来更新Test1 DB中的Employee表中的DeptID列。

我知道我可以恢复数据库本身,但这不是一个解决scheme。 我需要从Test2数据库更新Test1数据库中的值。

如果两个数据库位于同一台服务器上,则应该可以创build如下所示的SQL语句:

 UPDATE Test1.dbo.Employee SET DeptID = emp2.DeptID FROM Test2.dbo.Employee as 'emp2' WHERE Test1.dbo.Employee.EmployeeID = emp2.EmployeeID 

从你的文章中,我不太清楚你是否想用Test2.dbo.Employee (这就是我的查询所做的)的值来更新 Test1.dbo.Employee ,或者Test2.dbo.Employee (因为你在Test1上提到db是新桌子……)

 update t2 set t2.deptid = t1.deptid from test1 t1, test2 t2 where t2.employeeid = t1.employeeid 

UPDATE table1<BR> SET column1 = (SELECT expression1<BR> FROM table2<BR> WHERE conditions)<BR> [WHERE conditions];<BR>

`

 UPDATE table1 SET column1 = (SELECT expression1 FROM table2 WHERE conditions) [WHERE conditions]; 

`

 update test1 t1, test2 t2 set t2.deptid = t1.deptid where t2.employeeid = t1.employeeid 

你不能使用mysql的关键字

尝试一个类似的查询

 INSERT INTO NEW_TABLENAME SELECT * FROM OLD_TABLENAME; 

这工作奇迹 – 没有轮到调用这个程序的forms与DataTable与模式完全匹配custType创build表客户(ID INT身份(1,1)主键,名称varchar(50),cnt varchar(10))的代码

  create type custType as table ( ctId int, ctName varchar(20) ) insert into customer values('y1', 'c1') insert into customer values('y2', 'c2') insert into customer values('y3', 'c3') insert into customer values('y4', 'c4') insert into customer values('y5', 'c5') declare @ct as custType insert @ct (ctid, ctName) values(3, 'y33'), (4, 'y44') exec multiUpdate @ct create Proc multiUpdate (@ct custType readonly) as begin update customer set Name = t.ctName from @ct t where t.ctId = customer.id end public DataTable UpdateLevels(DataTable dt) { DataTable dtRet = new DataTable(); using (SqlConnection con = new SqlConnection(datalayer.bimCS)) { SqlCommand command = new SqlCommand(); command.CommandText = "UpdateLevels"; command.Parameters.Clear(); command.CommandType = CommandType.StoredProcedure; command.Parameters.AddWithValue("@ct", dt).SqlDbType = SqlDbType.Structured; command.Connection = con; using (SqlDataAdapter dataAdapter = new SqlDataAdapter(command)) { dataAdapter.SelectCommand = command; dataAdapter.Fill(dtRet); } } } 
  UPDATE Employee SET Empid=emp3.empid FROM EMP_Employee AS emp3 WHERE Employee.Empid=emp3.empid 

使用test1

从test2.dbo.employee插入雇员(deptid)中selectdeptid