快捷搜索: 王者荣耀 脱发

LeetCode176——第二高的薪水

我的LeetCode代码仓:

原题链接:

题目描述:

知识点: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解题报告:

思路二:使用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解题报告:

经验分享 程序员 微信小程序 职场和发展