有表 TableA 中有列 C1、C2、C3,列 C1 中有很多相同的数据,每个相同的数据对应的 C2、C3 列只有一行记录存在非NULL值,需要将此值更新到对应的为NULL的项中。
示例如下:
C1 C2 C3
---------------
1 9 6
1 NULL NULL
2 NULL NULL
2 8 5
3 7 4
3 NULL NULL
需要更新为:
C1 C2 C3
---------------
1 9 6
1 9 6
2 8 5
2 8 5
3 7 4
3 7 4
最好只使用一条Update语句,请勿使用Group,求大神。。。
------解决思路----------------------
-- 大周末的,都去玩了。
create table test(C1 int , C2 int, C3 int)
insert into test values
(1, 9, 6),
(1, NULL, NULL),
(2, NULL, NULL),
(2, 8, 5),
(3, 7, 4),
(3, NULL, NULL)
go
select * from test
go
update A
set A.C2 = B.C2 , A.C3 = B.C3
from test A , test B
where A.C1 = B.C1 and A.C2 is null and B.C2 is not null
go
select * from test
go
drop table test
go
(6 行受影响)
C1 C2 C3
----------- ----------- -----------
1 9 6
1 NULL NULL
2 NULL NULL
2 8 5
3 7 4
3 NULL NULL
(6 行受影响)
(3 行受影响)
C1 C2 C3
----------- ----------- -----------
1 9 6
1 9 6
2 8 5
2 8 5
3 7 4
3 7 4
(6 行受影响)