2014-05-12 37 views
0

我有如下表:如何從同一個表更新與其他行值的行值

參數

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 

我我試圖用最後兩行的值來更新第一行兩個值,通常我想更新v來自100 paramId與101 paramId的值,我有相同的ownerId。

我用下面的腳本嘗試:

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

此腳本返回(0行(S)的影響)

回答

0

兩個你行與IDS 3 & 4對列相同的數據OWNERID,芳族聚酰胺和價值。您需要按列ID進行過濾以更新您的行。 是這樣的:

參數更新 設定值=(選擇從參數值其中id = 3)其中,ID = 1

參數更新 設定值=(選擇從參數值其中id = 4)其中id = 2

+0

這是一個解決方案,但我需要的東西一般來更新我的整個表沒有指定ownerId,因爲我可以有更多的所有者。我要更新表格 – TBogdan

0

您可能需要說明爲什麼記錄1應該更新爲記錄3的值,記錄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 
相關問題