2017-06-20 114 views
0

所以我有兩個表如下所示:SQL:根據條件更新特定行

- T_Sample 
ws_id|date|depth|number_l 
    | |  | 

- T_Sample_value 
ws_id|parameter|value 
    |   | 

我在T_sample表中的一些行,具有負深度值並且在T_sample_value表中它們有一些數據;我想要做的是爲這些行我想複製他們的數據(存在T_sample_value)行T_sample其中有深度值的行。

我試圖用子查詢做一個更新集合查詢,但我得到的錯誤是,子查詢確實返回多行並且無法更新字段。我試圖看起來非常像這樣:

UPDATE T_sample_value 
SET T_sample_value.ws_id = (select blah blah where depth is <0) 
WHERE T_sample_value.ws_id = (select blah blah where depth is = 0) 
+0

見https://stackoverflow.com/documentation/sql-server/1008/join#t = 201706201908261234727。 – APH

+0

請提供樣本數據和期望的結果。 –

回答

0

你想辦一個update-join

UPDATE a 
SET depth = b.value 
FROM T_Sample a 
JOIN T_Sample_value b 
    ON a.ws_id = b.ws_id 
WHERE a.depth = 0; 
+0

對不起,但你認爲價值是「深度」。實際上,T_sample_value表可以包含具有相同ws_id且具有不同參數和不同值的數千行。 – user2019747

+0

好的,但現在你看到了更新連接的正確結構,你能不能適應你的需求? –