如何在T-SQL中使用来自同一表中记录的数据更新多个记录

我需要基于某个记录中的数据来更新一个表中的记录。

ProdFam    ProdID     Color        Form        Price    
ProdA      ProdA      White        Sheet       $100
ProdA      ProdA-10   White        Sheet       $10
ProdA      ProdA-20   White        Sheet       $15
ProdA      ProdA-25   White        Sheet       $35
ProdB      ProdB-10   Red          Roll        $24
ProdB      ProdB-15   Red          Roll        $28

因此,使用上面的示例,ProdA的信息通过不同的过程进行了更新,现在显示颜色为灰白色,形式为Mul-Sheet。

ProdFam    ProdID     Color        Form        Price    
ProdA      ProdA      Off-White    Mul-Sheet   $100
ProdA      ProdA-10   White        Sheet       $10
ProdA      ProdA-20   White        Sheet       $15
ProdA      ProdA-25   White        Sheet       $35
ProdB      ProdB-10   Red          Roll        $24
ProdB      ProdB-15   Red          Roll        $28

我需要将与ProdA具有相同ProdFam的其余记录更新为新规范。因此,最终结果应该是所有ProdA的颜色均为灰白色和Mul-Sheet形式,但其价格和ProdID保持不变。

ProdFam    ProdID     Color        Form        Price    
ProdA      ProdA      Off-White    Mul-Sheet   $100
ProdA      ProdA-10   Off-White    Mul-Sheet   $10
ProdA      ProdA-20   Off-White    Mul-Sheet   $15
ProdA      ProdA-25   Off-White    Mul-Sheet   $35
ProdB      ProdB-10   Red          Roll        $24
ProdB      ProdB-15   Red          Roll        $28

任何帮助将不胜感激。

谢谢

ziruozi 回答:如何在T-SQL中使用来自同一表中记录的数据更新多个记录

更新会立即影响由WHERE子句确定的所有记录,并且只会更改您在UPDATE命令中指定的字段。

为此,您可以自联接表以找出必须更新的行。

update all_prod
set all_prod.Color = first_prod.Color
from MyTable as all_prod
join MyTable as first_prod on first_prod.ProdFarm = all_prod.ProdFarm
where first_prod.ProdID = 'ProdA' and first_prod.Color = 'Off-White'

注意:

  1. and first_prod.Color = 'Off-White'在这里是可选的,只需将其放置以确保将其更改为正确的颜色即可。

  2. 它将再次更新第一行,除非您添加另一个AND来阻止它。

本文链接:https://www.f2er.com/3079332.html

大家都在问