LeetCode176——第二高的薪水

我的LeetCode代码仓:https://github.com/617076674/LeetCode

原题链接:https://leetcode-cn.com/problems/second-highest-salary/description/

题目描述:

LeetCode176——第二高的薪水_第1张图片

知识点:LIMIT语句

思路一:使用子查询和LIMIT语句

先对薪水从高到低进行排序,再使用LIMIT语句进行筛选出第二高的薪水。

如果表中存在薪水相同的情况,比如表中只存在2个薪水,且均是100,我们需要视为其均是第一,即不存在第二高的薪水。因此,我们需要使用DISTINCT来去除薪水重复的情况。

LIMIT 1, 2表示的是返回第2行到第3行的数据,也可以使用LIMIT 2 OFFSET 1。

SQL语句:

SELECT (SELECT DISTINCT Salary FROM Employee ORDER BY Salary DESC LIMIT 1, 1) AS SecondHighestSalary

LeetCode解题报告:

LeetCode176——第二高的薪水_第2张图片

思路二:使用IFNULL函数和LIMIT语句

IFNULL(expr1,expr2)函数的用法:

如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2。IFNULL()返回一个数字或字符串值。

SQL语句:

SELECT IFNULL((SELECT DISTINCT Salary FROM Employee ORDER BY Salary DESC LIMIT 1, 1), NULL) AS SecondHighestSalary

LeetCode解题报告:

LeetCode176——第二高的薪水_第3张图片

 

你可能感兴趣的:(LeetCode题解)