设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1395|回复: 0

sql server 根据字段去重

[复制链接]

22

主题

197

金钱

309

积分

入门用户

发表于 2019-7-8 17:15:30 | 显示全部楼层 |阅读模式
本帖最后由 铅笔哎呀呀断了 于 2019-7-8 17:18 编辑

使用 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
  1. 要获取学生名并去重
  2. select name from (
  3.         select name ,row_number() over ( partition by name order by score) rn from UserGrade
  4.       
  5.     )as s
  6. 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
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表