SQL关联表更新注意事项

本文介绍了如何使用SQL进行关联表更新操作,通过一个派生表与目标表关联,实现数据同步。示例中展示了如何从多个表中获取数据,并更新到目标表jd_DeptPlanTaskExecute的相关字段,特别提醒在编写SQL更新语句时,需要明确指出表名而非使用别名。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

你可以将select 结果当成一个派生表与A表关联更新就可以了
类似如下
update A set 列名 = B.列名 from (select 编码,count(*)as 列名1,SUM(CASE WHEN 条件 THEN 1 ELSE 0 END) AS 列名 from c表 group by 编码) as B where A.编号 = B.编号
 
注意:上面的A表不能取别名,必须写的是表明.字段名
例子:
UPDATE jd_DeptPlanTaskExecute
SET TaskName = B.TaskName,TaskType = B.TaskType,DutyPeople = B.DutyPeople,Start = B.Start,Finish = B.Finish,Duration = B.Duration
FROM (
	SELECT z.ID AS ID, y.TaskName AS TaskName, y.TaskType AS TaskType, x.UserID AS DutyPeople,y.Start AS Start, y.Finish AS Finish, y.Duration AS Duration FROM jd_DeptPlanTaskExecute z LEFT JOIN jd_ProjectPlanTaskExecute y ON z.RefID = y.ID LEFT JOIN jd_ProjectPTRelatedUserExecute x ON x.UserType = 1 AND x.TaskID = y.ID WHERE z.PlanID = NEWID() AND z.IsTargetTask = 1 AND z.TaskOriginType = 1 AND NOT (z.DutyPeople<>x.UserID AND z.DutyDept<>x.OwnerDeptID) AND y.IsEnd = 1
) AS B
WHERE jd_DeptPlanTaskExecute.ID = B.ID
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值