2017-06-20 113 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

好的,但现在你看到了更新连接的正确结构,你能不能适应你的需求? –