UPDATE SET FROM WHERE 续

本文介绍了一个简洁的SQL方法,通过WITH子句和JOIN操作来更新SOTracking表中的InDate、EditDate和OperateDate字段,特别适用于处理特定SONumber的操作。文章深入分析了SQL查询的细节,并提供了清晰的代码示例,帮助开发者理解和实现类似的数据更新任务。

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

UPDATE  B
SET B.InDate=a.InDate,B.EditDate=A.EditDate,B.OperateDate=A.OperateDate
FROM (SELECT T.InDate,T.EditDate,T.OperateDate,T.SONumber FROM SOTracking AS T WITH(NOLOCK)
WHERE T.operation=130 and T.SONumber in(111,222,333)) AS A
   INNER JOIN SOTracking AS B  ON B.SONumber=a.SONumber
WHERE Operation=60


-------------------------------------------------------------------------------------------


;with so_date as
(
SELECT InDate,EditDate,OperateDate,SONumber FROM SOTracking WITH(NOLOCK)
WHERE operation=130 and SONumber in(111,222,333)
)

UPDATE A
SET A.InDate=t.InDate,A.EditDate=t.EditDate,A.OperateDate=t.OperateDate
FROM so_date AS T INNER JOIN SOTracking as A ON A.SONumber=t.SONumber
WHERE A.Operation=60

需要注意的是:FROM需要把更新的表和关联的表都写在这里。其实主要就是UPDATE FROM 的用法

       比较喜欢自己写的第二个方法,看着清晰,还是自己想出来的。嘻嘻~~~~~~~终于知道WITH杂用了。

转载于:https://www.cnblogs.com/zerocc/archive/2011/12/30/2307695.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值