sql server 根据字段去重

使用 row_number() over (partition by 要去重的字段 order by 排序字段)

 

 

数据库表结构 学生成绩表 UserGrade

Id        int              Checked     主键Id
Name   varchar(50) Checked     学生名
Course varchar(50) Checked     课程名
Score   int             Checked      分数

 

有如下数据,

 

1001 李四 英语 100 

1000 张三 语文 80

 1004 李四 数学 60

 1005 李四 语文 80 

1008 张三 英语 60

 1007 王五 数学 30

 1006 王五 语文 50 

1003 王五 英语 50 

1002 张三 数学 90 

 



要获取学生名并去重
select
name fromselect name ,row_number() over ( partition by name order by score) rn from UserGradeas s
where rn=1

 

其实就是根据名称进行分组取每组中的第一个

select name ,row_number() over ( partition by name order by score) rn from UserGrade

查询结果为
李四1
李四  2
 李四  3
 王五  1
 王五  2
 王五  3
 张三  1
 张三  2
 张三  3

 

 

posted @ 2019-07-04 17:17  冷瞳ruin  阅读(5701)  评论(0编辑  收藏  举报