2012-04-10 46 views
0

我有多个用户以不同的列类型科拉姆的最新细节在MySQL

examscoreid | examscorenum | examresult | userid | examtype 
55     89    P  7760  1 
54     78    P  7760  3 
53     90    P  7760  5 
52     89    P  7760  4 
41     80    P  7666  2 
44     80    P  7666  2 

我需要用不同的examtype的examscorenum和最新examscoreid与examtype分组

相同的记录类型的数据表

结果应该是像

examscoreid | examscorenum | examresult |  userid | examtype 
    55     89    P  7760  1 
    54     78    P  7760  3 
    53     90    P  7760  5 
    44     80    P  7666  2 

见的用户ID 7666得到了两列同examtype但reequired结果应该包含最新的考试scoreid(采取44不41)

同样地,我需要整个用户数据

示例查询

SELECT examscorenum FROM `exams` WHERE userid in (7760,7666) group by examtype,userid order by examscoreid desc 

我得到的数据,但对于用户ID 7666我得到examscoreid 41不44

+3

不是真的知道你是问什么。你能发布预期的结果吗? – Travesty3 2012-04-10 15:33:58

+2

你能向我们提供一个你想要输出看起来像什么的例子吗? – Matthematics 2012-04-10 15:34:38

+0

我已经更新了代码。请检查 – 2012-04-10 17:15:34

回答

0

怎样的结果了解以下信息:

create table #exams 
(
    examscoreid int, 
    examscorenum int, 
    examresult varchar(1), 
    userid int, 
    examtype int 
) 

insert into #exams values(55, 89, 'P', 7760, 1) 
insert into #exams values(54, 78, 'P', 7760, 3) 
insert into #exams values(53, 90, 'P', 7760, 5) 
insert into #exams values(52, 89, 'P', 7760, 4) 
insert into #exams values(41, 80, 'P', 7666, 2) 
insert into #exams values(44, 80, 'P', 7666, 2) 

SELECT distinct t1.examscoreid, t1.examscorenum, t1.examresult, t1.userid, t1.examtype 
FROM #exams t1 
JOIN 
(
    select userid, max(examscoreid) as maxscoreid, examtype 
    from #exams 
    group by userid, examtype 
) t2 
    on t1.userid = t2.userid 
WHERE t1.userid in (7760,7666) 
    AND t1.examscoreid = t2.maxscoreid 
order by t1.examscoreid desc 

drop table #exams 
+0

非常感谢,这是我一直在寻找。 – 2012-04-13 14:52:48