在問題中提供了一個empoyee表,有字段id和salary,需要將salary字段中取出第二高的值,如果沒有第二高則返回null,輸出字段名為SecondHighestSalary,使用mysql語法編寫
首先我們分析這個表只有單純的一個字段,查詢后加一個as,倒序排列該表,然后limit第二條即可,所以sql語句如下
select salary as SecondHighestSalary from Employee order by salary desc limit 1,1
運行測試成功,但是當(dāng)數(shù)據(jù)不足三條時報錯,輸入信息如下
所以需要修正沒有時顯示null,因為單條sql返回查不出來時只能返回空,所以需要將該查詢套入一個子查詢中,用ifnull方法判斷為空時顯示null,該方法判斷不為空顯示第一個值,為空顯示第二個值,所以sql如下
select ifnull(
(
select salary as SecondHighestSalary
from Employee group by salary order by salary desc limit 1,1
),
null
) as SecondHighestSalary
測試用例全部通過,方法可行
下一篇: 沒有了
關(guān)鍵詞: