考虑一个包含两列的表:mark
和name
我需要获取第二高的值以及第二高的名称。
答案 0 :(得分:1)
您可以在SQL中使用ROW_NUMBER(),RANK(),DENSE_RANK()函数。 但是在这种情况下,您必须使用DENSE_RANK(),因为在某些情况下,可能会有2个或更多的学生获得最高分,在这种情况下,您将不能使用ROW_NUMBER()或RANK()。
详细了解此功能click here
SELECT * FROM (
SELECT name, mark, DENSE_RANK() over (order by mark desc) RankNo
FROM tablename
) AS Result
WHERE Result.RankNo = 2
答案 1 :(得分:0)
SELECT *
FROM (SELECT name,
mark,
Row_number() over(ORDER BY mark DESC) AS rownums
FROM employees)
WHERE rownums = 2;
答案 2 :(得分:-1)
SELECT name,mark FROM table ORDER BY mark desc limit 1,1
此代码按mark
降序对所有记录进行排序。 limit 1,1
跳过第一个结果(第一个1
=第一个记录),然后返回下一个结果(第二个1
=第二个记录)。