Sqlserver多表关联更新

本文介绍了如何在SQL Server中通过多表关联来更新一个表的字段值,特别是当需要根据另一表的字段信息来更新目标字段时。以用户信息表(UsersInfo)为例,展示了如何依据RYQXB表中的数据更新reporto字段,将其设置为对应的上级领导ID。

在介绍update之前先推荐两个备份表的sql。
Select * into table_2 from table_1//table2可以不存在
Insert into table_2(column1,column2) select column1,column2 from table_1 //需要先创建table_2若不存在
链接推荐 : 链接地址 链接地址
这次描述的问题是如何根据第二张表(RYQXB)关联更新该表(UserInfo)的某字段值为本表的另一字段值(自连接查询)
有这样两张表
UsersInfo存放员工信息,其中reporto字段需要存放的该员工的上级领导id号,目前默认存为0
这里写图片描述
RYQXB是从excel中导入进来的,其中reportto存放的是上级领导的Ename
这里写图片描述
如何根据RYQXB关联将UsersInfo 表reporto字段值update成相应的id.
Sqlserver(oracle写法和sqlserver还不一样,可以用select作为一个子表进行更新,这需要注意下) : sql如下:
UPDATE DBO.UsersInfo SET DBO.UsersInfo.ReporTo=B.Id
FROM
DBO.UsersInfo,DBO.UsersInfoB,dbo.RYQXB
where DBO.UsersInfo.UserCode=dbo.RYQXB.Usercode
AND dbo.RYQXB.REPORTTO=B.Ename

具体情况若是判断逻辑关系是否正确可以像这样试试:
Select dbo.usersinfo.usercode,dbo.ryqxb.usercode,dbo.ryqxb.reportto,b.ename
FROM DBO.UsersInfo,DBO.UsersInfo B,dbo.RYQXB
where DBO.UsersInfo.UserCode=dbo.RYQXB.Usercode AND dbo.RYQXB.REPORTTO=B.Ename

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值