日期:2014-05-16  浏览次数:20625 次

SQL两个库批量修改问题
本帖最后由 ccmaojiushiwo 于 2014-04-14 20:00:01 编辑


两个库批量修改问题

A库
员工部门
Department
DepartmentID DepartmentName
员工表 
Employee
EmployeeID EmployeeStrID EmployeeName DepartmentID

B库
员工部门
Department
DepartmentID DepartmentName
员工表 
Employee
EmployeeID EmployeeStrID EmployeeName DepartmentID


 UPDATE B.dbo.Employee set EmployeeStrID=esi ,EmployeeName=en,DepartmentID=ISNULL((SELECT Top 1 DepartmentID FROM B.dbo.Department WHERE b.DepartmentName=dn Order by DepartmentID desc),1)
 FROM B.dbo.Employee a LEFT  JOIN B.dbo.Department b ON a.DepartmentID=b.DepartmentID 
 INNER JOIN 
 (SELECT EmployeeName en,EmployeeStrID esi,DepartmentName dn FROM A.dbo.Employee c LEFT  JOIN A.dbo.Department d ON c.DepartmentID = d.DepartmentID) e ON a.EmployeeStrID=e.esi AND(a.EmployeeName!=e.en OR b.DepartmentName!=e.dn)


有些是员工没有部门的,所以我用了left,都是烂数据,我想把B库跟A库根据员工号来同步,把名字和部门弄成相同的,B库的部门已经建成跟A库一样了,通过A的部门名来找到B的部门ID给B的员工,同步好像有问题,一些明明有部门名的ID不是为1的都变成了1,大侠们帮我看看
分数只有这么多了,还有另外个帖子没结,要分可以回答那个
------解决方案--------------------
先同步部门表,再同步员工表,写的太乱了。
UPDATE a seta. EmployeeStrID=b.EmployeeStrID,a.EmployeeName=b.EmployeeName。。。。
from B.dbo.Employee a inner join A.dbo.Employee  b on a.EmployeeStrID=b.EmployeeStrID