日期:2014-05-16  浏览次数:20823 次

[求助]一个关于考试成绩的SQL语句
姓名 科目 考试时间 名次
张三 语文 2012-02-12 2
李四 语文 2012-03-12 6
王五 语文 2012-03-16 8
张三 数学 2012-03-14 5
李四 数学 2012-03-16 6
…………

上面是一个考试成绩表,不同学生考试时间不同,怎么写查询语句,可以查出某个学生所有科目的最后一次考试名次?
应该需要用到group by 吧?但没搞出来,请大家指点一下。谢谢

------解决方案--------------------
学生所有科目的最后一次考试名次? 是什么意思 
select 学生姓名 from table 
where 考试时间 limit 1
------解决方案--------------------
select 学生姓名 from table
where 考试时间=最后考试时间
group by 名次

------解决方案--------------------
SQL code
select *
from tb A
where not exists (select 1 from tb B where A.姓名=B.姓名 and A.科目=B.科目 and A.考试时间>B.考试时间)

------解决方案--------------------
select * from 成绩表 where 姓名='张三' order by 考试时间 DESC LIMIT 1;
------解决方案--------------------
select 名次 from 表 
where name=某人 
and 考试时间=(select max(考试时间) from 表 where name=某人)