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