Sql - 查询工资第二高的记录.

题目要求:

给定一个表employee, 有两个字段id, salary,要求显示表中薪水第二的数据.如果没有第二高, 显示为null

Mysql:

select 
IFNULL(
(
select distinct(Salary)
 from Employee
    order by Salary desc
    limit 1 ,1
),null
) as SecondHighestSalary

解析:

Mysql的考点:

1. limit m,n : 查询结果记录的index是从0开始, 表示第一条记录, 这里的m=1为从第一条开始.n表示在限制条数之后的offset记录.

    limit 1,1意味着从查询结果里的第index=1个位置从后往前取1条记录.

2. ifnull(exp,value):如果exp的结果为空, 则返回value.否则结果为exp计算的结果.

解题思路: 先将查询结果倒序排序, 再从结果里选择index=1的显示1条, 如果没有这样的记录, 则显示null.

猜你喜欢

转载自blog.csdn.net/aqudgv83/article/details/89761921