如何检查SQL中是否存在第二高分?

时间:2015-09-03 06:19:01

标签: mysql sql

我有一个表,其中有一列表示学生的分数。如果确实存在第二高分,我想选择第二高分,如果不存在,则返回null。想知道如何在SQL中实现。

我正在使用MySQL / SQL Workbench。

5 个答案:

答案 0 :(得分:2)

此查询将返回第二个最高值(如果存在)或 - 否则为NULL

SELECT MAX(score)
FROM table_name
WHERE score<>(
SELECT MAX(score)
FROM table_name);

答案 1 :(得分:1)

请尝试执行以下sql查询以检索第二高分

SELECT score from table order by score desc limit 1,1

上述查询将返回第二高分(如果存在)或 NULL (如果该记录不存在)

答案 2 :(得分:0)

如果排名前2位,则会显示第二位 另一个明智的方面是:如果它在整个表中具有单个最大值,则它显示为空...

select top 1 case when row_number() over (order by tbl.score asc) =2 then a else null end ,row_number() over (order by tbl.score asc) as ranks from (

select  top 2 score from table group by score  order by 1 desc

)tbl
order by 1 desc

我选择了前两个desc记录然后取得第二个记录..

如果不存在,那么它将显示为空

答案 3 :(得分:0)

尝试以下查询

SELECT max(score)FROM表WHERE得分不是IN(SELECT max(得分)FROM表);

OR

SELECT max(score)FROM表WHERE得分&lt; (SELECT max(score)FROM table);

答案 4 :(得分:0)

我在考虑如何显示第n个最大值而不是第2个最大值。我们可以使用最小代码而不是最大代码。

Select * from employee where salary= (Select min(salary) from (select * from employee order by salary desc limit 2) as MyTop);

可以通过仅将desc限制更改为所需的“ nth”来将其修改为所需的第n个最大值。