需要为相同 c3 的所有值更新列 c2。即 c3 有五个 0,前三个 0 在 c2 中有 10 个。在这里,我需要用值 10 更新记录 7 和 9。最后,c3 中的所有 0 都应该具有相同的 c2 值,即 10
问问题
101 次
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 回答