如何使用同一个表中的其他行值更新行值

时间:2014-05-12 11:46:22

标签: sql sql-update

我有下表:

参数

id, ownerId, paramId, value
1,    500,    100,    12345
2,    500,    100,    54321
3,    500,    101,      900
4,    500,    101,      901
5,    501,    101,      888
6,    501,    101,      777

预期结果:

参数

id, ownerId, paramId, value
1,    500,    100,      900
2,    500,    100,      901
3,    500,    101,      900
4,    500,    101,      901
5,    501,    101,      777
6,    501,    101,      777

我试图用最后两行的值更新第一行的两行值,一般来说,我希望使用101 paramId中的值更新100 paramId中的值,其中我拥有相同的ownerId。

我正在尝试使用以下脚本:

Update Parameters 
    set value = t1.value
    from Parameters t1
    where ownerId = t1.ownerId AND paramId = 100 And t1.paramId = 101

此脚本返回(0行(s)受影响)

2 个答案:

答案 0 :(得分:0)

你的行有ids 3& 4列ownerId,paramId和value具有相同的数据。您需要按列ID进行过滤以更新行。 类似的东西:

  

更新参数       set value =(从参数中选择id = 3的值),其中id = 1

     

更新参数       set value =(从参数中选择id = 4的值),其中id = 2

答案 1 :(得分:-1)

您可能需要澄清为什么应使用记录3中的值更新记录1,并且记录2应使用记录4中的值更新?但这会起作用......

update
    p
set 
    p.value = t.value
from 
    Parameters p
join 
    Parameters t
on
    t.ownerId = p.ownerId
    and t.paramId = 101
where
    p.paramId = 100