首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

怎么得到分组后的主键ID

2012-07-19 
如何得到分组后的主键ID有表如下成绩表,得到每个人最高成绩排名,并且知道对象的主键ID主键ID用户名成绩日

如何得到分组后的主键ID
有表如下成绩表,得到每个人最高成绩排名,并且知道对象的主键ID
主键ID 用户名 成绩 日期
1 张三 500 2012-01-01
2 张三 400 2012-01-02
3 李四 100 2012-01-04
4 李四 200 2012-01-05
查每个人最高成绩排名SQL为

SQL code
  SELECT Row_Number OVER (ORDER BY 成绩 DESC) AS Num , 用户名FROM 成绩表GROUP BY 用户名

但是无法知道最高成绩的主键ID是什么

[解决办法]
SQL code
--> 测试数据:[test]if object_id('[test]') is not null drop table [test]create table [test]([主键ID] int,[用户名] varchar(4),[成绩] int,[日期] datetime)insert [test]select 1,'张三',500,'2012-01-01' union allselect 2,'张三',400,'2012-01-02' union allselect 3,'李四',100,'2012-01-04' union allselect 4,'李四',200,'2012-01-05'select * from [test] awhere a.成绩=(select max(成绩) from [test] b where a.用户名=b.用户名)/*主键ID    用户名    成绩    日期-------------------------------------------------1    张三    500    2012-01-01 00:00:00.0004    李四    200    2012-01-05 00:00:00.000*/
[解决办法]
探讨

你上面的语句太简单了 我还以为可以这么简单的语句实现,让我高兴了一把,结果发现意义完全 变了
你的SQL 是用户自己成绩与自己的排名 ,不是自己的最高成绩与别人的总排名

热点排行