2

在此处输入图像描述

需要为相同 c3 的所有值更新列 c2。即 c3 有五个 0,前三个 0 在 c2 中有 10 个。在这里,我需要用值 10 更新记录 7 和 9。最后,c3 中的所有 0 都应该具有相同的 c2 值,即 10

4

2 回答 2

1

您需要将self join列更新C2为:

UPDATE table_name a
       INNER JOIN table_name b
           ON a.C2 = b.C3
SET a.C2 = b.C2
WHERE b.C2 <> 0;
于 2012-08-03T10:10:33.903 回答
0

你想如何决定从哪个记录中获取值来更新其他记录?
select c3 from yourTable group by c3将返回您不同的 c3 值,现在您可以从每个 c3 获取相应的 c2 值,但是您要如何决定使用哪个值来更新其他值?

编辑:
很少的 SQL 语句方法:
set @uniqueC3s = (select c3 from yourTable group by c3);
-- loop through the resutlset set @requiredC2Value = (select TOP 1 c2 from yourTable where c3 = @uniqueC3s order by c1);
update yourTable set c2 = @requiredC2Value where c3 = @uniqueC3s;
-- end of loop

于 2012-08-03T10:24:57.887 回答