如何获得唯一的最大数据

时间:2019-05-26 13:41:13

标签: sql sql-server sql-server-2008

我有下表

userid      comp_dd     coursecode  qualification   course_id   course      passyear    totalmarks             func        stream
----------- ----------- ----------- --------------- ----------- -------------------------------------------------- ----------- -----------------
60          26          1           High School     15          Class 10     26          67                     2           All Subject
60          26          2           Senior Secondry 15          Class 12     26          85                     2           Commerce
60          2010        3           Graduates       4           B.Tech/B.E   2010        54                     1           IT/Computers
60          2013        4            Post Graduates 9           M.com        2013        98.5                   2           Commerce

我想获得最大课程代码的唯一记录,输出应为

userid      comp_dd     coursecode  qualification   course_id   course      passyear    totalmarks             func        stream
----------- ----------- ----------- --------------- ----------- -------------------------------------------------- ----------- -----------------
60          2013        4            Post Graduates 9           M.com        2013        98.5                   2           Commerce

会有很多不同用户ID的记录

2 个答案:

答案 0 :(得分:2)

我想你想要

select t.*
from t
where t.coursecode = (select max(t2.coursecode)
                      from t t2
                      where t2.userid = t.userid
                     );

您还可以使用窗口函数来执行此操作,但是使用正确的索引(位于(userid, coursecode)上,关联的子查询通常会更快。

答案 1 :(得分:0)

coursecode降序排列表格并获得第一行:

select top 1 *
from tablename
order by coursecode desc

这仅在列coursecode中没有重复项的情况下有效,因为它将仅获取1行,但是我想是这样,因为您说:

  

我想获得最大课程代码的唯一记录