編寫一個(gè) SQL 查詢,獲取 Employee 表中第二高的薪水(Salary) 。
+----+--------+
| Id | Salary |
+----+--------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+----+--------+
例如上述 Employee 表,SQL查詢應(yīng)該返回 200 作為第二高的薪水。如果不存在第二高的薪水,那么查詢應(yīng)返回 null。
+---------------------+
| SecondHighestSalary |
+---------------------+
| 200 |
+---------------------+
這道題目很有意思,取得不是max,而是第二個(gè)max。
- 第一次提交
select Salary as SecondHighestSalary from Employee
group by Salary desc
order by Salary desc
limit 1,1
看起來沒有問題,但是如果limit 不存在,那么會(huì)返回一個(gè)空結(jié)構(gòu)而不是null。
- 第二次提交
select ifnull(null,Salary ) as SecondHighestSalary from Employee
group by Salary desc
order by Salary desc
limit 1,1
- 第三次提交
select ifnull(Salary,null ) as SecondHighestSalary from Employee
group by Salary desc
order by Salary desc
limit 1,1
- 第四次提交
二、三次提交陷入了一個(gè)誤區(qū),直到select 1,Salary。我發(fā)現(xiàn)根本就沒有輸出,知道看了評(píng)論有一個(gè)大佬的代碼。
select ifnull (
(select distinct Salary
from Employee
order by Salary desc
limit 1,1),
null
)as 'SecondHighestSalary'
ifnull(x,y),若x不為空則返回x,否則返回y
limit x,y 從第x條取y條
distinct,過濾關(guān)鍵字
比我寫的好多了,真不愧是大佬。
結(jié)論
select limit 沒有就為空
臨時(shí)表用法。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/second-highest-salary
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。