经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MS SQL Server » 查看文章
sql server 根据字段去重
来源:cnblogs  作者:冷瞳ruin  时间:2019/7/5 9:10:47  对本文有异议

使用 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. 要获取学生名并去重
    select
    name from
  2. select name ,row_number() over ( partition by name order by score) rn from UserGrade
  3. as s
    where rn=1

 

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

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

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

 

 

原文链接:http://www.cnblogs.com/zhangmm96/p/11133661.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号