某字段中有重复记录,如何添加一个新字段,其功能是给第一条记录标记为1,后面的重复记录都为0?假设重复记录是连续的,不考虑会跳跃存在。
例如:
班级 班级 标记
一班 一班 1
一班 一班 0
一班 一班 0
二班 二班 1
二班 二班 0
SqlServer中有Row_Number() Over(),可以使用这个。
SELECT *, Row_Number() OVER (partition by 班级 ORDER BY 班级) rank FROM Table
最后得出的rank不为1表示是重复的值,可以insert进表然后update成0就行。
谢谢,问题终于解决了!
update table set 标记=1 where id in (SELECT id FROM table a WHERE NOT EXISTS (SELECT 1 FROM table WHERE a.id>id AND a.班级=班级))
或者 update table set 标记=1 where id (select min(id) from table group by 班级 )