题目要求:
给定一个表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.