SQL - 表中第二高的记录

时间:2018-04-17 13:11:04

标签: sql greatest-n-per-group

SELECT MAX(Score)
FROM Students
WHERE Score < (SELECT MAX(Score) FROM Students);

上述查询工作正常,并获取第二高分的记录,而下面提到的查询不能获取任何内容

SELECT *
FROM Students
WHERE Score < (SELECT MAX(Score) FROM Students);

此处学生是我想要获取该记录的所有详细信息的表格,该记录在整个表格中排名第二。

我希望第二个查询能够执行,感谢提前帮助我。

  • 我没有使用任何数据库,我只是在w3schools中尝试这些查询。

2 个答案:

答案 0 :(得分:1)

使用标准SQL,通常使用window functions解决此问题:

select *
from (
  select *, dense_rank() over (order by score desc) as rnk
  from students
) t
where rnk = 2;

以上是ANSI标准SQL,适用于所有现代DBMS。

答案 1 :(得分:0)

如何使用translate-c订购和获取第一条记录:

LIMIT