表中某一列有相同数据,怎么只更新此相同数据的第一条记录
表中某一列有相同数据,如何只更新此相同数据的第一条记录?
有表 TableA 中有列 C1 和 C2 ,列 C1 中有很多相同的数据,怎样只更新相同数据的第一条记录?
示例如下:
C1 C2
-----------
1 NULL
1 NULL
2 NULL
2 NULL
3 NULL
3 NULL
只更新每个C1相同数据的第一个
C1 C2
-----------
1 0
1 NULL
2 0
2 NULL
3 0
3 NULL
最好只使用一条Update语句,求大神。。。
------解决思路----------------------
怎么又是一个开创函数的问题?今天这是怎么了?
另外,你c2列都是null,哪个c2算c1相同行的是第一行呢?
------解决思路----------------------
有表 TableA 中有列 C1 和 C2 ,列 C1 中有很多相同的数据,怎样只更新相同数据的第一条记录?
示例如下:
C1 C2
-----------
1 NULL
1 NULL
2 NULL
2 NULL
3 NULL
3 NULL
只更新每个C1相同数据的第一个
C1 C2
-----------
1 0
1 NULL
2 0
2 NULL
3 0
3 NULL
最好只使用一条Update语句,求大神。。。
------解决思路----------------------
怎么又是一个开创函数的问题?今天这是怎么了?
另外,你c2列都是null,哪个c2算c1相同行的是第一行呢?
create table #t
(
c1 int,
c2 varchar(10)
)
insert into #t values (1,null)
insert into #t values (1,null)
insert into #t values (1,null)
insert into #t values (2,null)
insert into #t values (2,null)
insert into #t values (2,null)
;with cte as
(
select ROW_NUMBER()over(partition by c1 order by c2) as rn ,* from #t
)
update cte set c2=0 where rn=1
select * from #t
1 0
1 NULL
1 NULL
2 0
2 NULL
2 NULL
------解决思路----------------------
SELECT C1, C1 * 3 AS C3 FROM TableA group by C1