使用子查询找出语文成绩查询最大的成绩记为a,然后再找出小于a的最大值就是课程成绩的第二高值。
select max(distinct 成绩) from 成绩表 where 课程='语文' and 成绩 < (select max(distinct 成绩) from 成绩表 where 课程='语文');
select max(distinct 成绩) from 成绩表 where 课程='语文' and order by 课程,成绩 desc limit 1,1 //表示从第二条数据开始,返回一条数据。
如果没有第二高的值,则返回空值,使用ifnull函数。
ifnull(a,b)函数解释:
select ifnull( (select max(distinct 成绩) from 成绩表 where 成绩<(select max(成绩) from 成绩表 where 课程='语文') and 课程='语文') ,null) as '语文课第二名成绩';
查找 Employee 表中第二高的薪水(Salary)。查询结果返回 200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null。
解:
select ifNull( (select distinct salary from Employee order by Salary Desc limit 1,1),null ) as SecondHighestSalary;