假设有这样的一张表student:
name mark
---------------
Alice 98
Bob 67
Eric 75
Kato 84
首先找到排名第一的学生,这一步没啥难度:
SELECT name, MAX(mark) as mark FROM student
有了最高成绩了,那么次高成绩也就很容易搞定了,也就是把所有小于最高成绩的全部拿出来,然后再在这个范围内找出最高成绩,那就是次高成绩:
SELECT name, MAX(mark) AS mark
FROM student
WHERE mark < (SELECT MAX(mark) FROM student);