题眼:1、返回第二高薪水
2 、如果没有返回null
1,先写出大的框架
SELECT salary
FROM Employee
ORDER BY salary DESC
LIMIT 1,1
2.薪水可能有重复的情况
SELECT DISTINCT salary
FROM Employee
ORDER BY salary DESC
LIMIT 1,1
3.依旧不满足题意:没有第二高输出null
SELECT
IFNULL(
SELECT DISTINCT salary
FROM Employee
ORDER BY salary DESC
LIMIT 1,1)
,NULL) AS SecondHightSalary
``
方法二max函数
找出比最大值小的最大值就是第二大值
SELECT MAX(Salary)
FROM Employee
WHERE Salary<(SELECT MAX(Salary)
FROM Employee)
知识点小结
1. IFNULL函数
它接受两个参数,如果不是NULL,则返回第一个参数。 否则,IFNULL函数返回第二个参数。
两个参数可以是文字值或表达式
语法
IFNULL(字段1,字段2)
如果字段1不为null返回字段1,否则返回字段2
2.关键字distinct
使用关键字可以去除重复的字段
语法:
SELECT DISTINCT(列名1,列名2)
distinct一般与列名连用,当有多个列时写在最前面
SELECT DISTINCT Price,SqFt
FROM house_price;