Leetcode SQL_#176_第二高的薪水
阿新 • • 發佈:2021-10-20
Leetcode SQL_#176_第二高的薪水
sqlContents
題目
解答
select distinct Salary as SecondHighestSalary
from Employee
order by Salary desc
limit 1 offset 1
知識點:
offset關鍵字,跳過排序當中的第一個,那麼得到的就是第二大的數字
問題:
- 這裡邊幾個關鍵字的順序問題,比如as應該放在哪裡?limit和offset有沒有嚴格的先後順序?
* as要放在欄位名稱之後,from之前,因為我是重新命名了一個欄位
* 實驗證明,limit必須在前,offset在後,不然會報語法錯誤 - 答案存在的漏洞:可能表中不同的工資只有1種,用了offset 1就是有問題的。
使用臨時表
第二行括號裡的select查詢出來的結果就是一個臨時表
select
(select distinct Salary from Employee order by Salary desc limit 1 offset 1)
as SecondHighestSalary;
使用ifnull()函式
ifnull(A,B)
:判斷A是否是null,如果是null會返回預設值B
select
ifnull((select distinct Salary from Employee order by Salary desc limit 1 offset 1),null)
as SecondHighestSalary;
注意:ifnull裡邊的第一項是一個select查詢出來的臨時表,需要加上括號