第二高薪水

2021-09-28 15:19:06 字數 789 閱讀 5273

需求:編寫乙個 sql 查詢,獲取employee表中第二高的薪水(salary)

例如上述employee表,sql查詢應該返回200作為第二高的薪水。如果不存在第二高的薪水,那麼查詢應返回null

解:

select ifnull ((select distinct(salary) from employee order by salary desc limit 1,1),null) as secondhighestsalary;
首先回顧一下mysql的 isfull 與limit的用法

ifnull(value1,value2)

1、如果value1不為空,結果返回value1。

2、如果value1為空,結果返回value2。

limit m,n "m"表示偏移量,表示從第幾位開始取。"n"表示長度,即需要取多少位。

需要注意的是偏移量的第一位為0,所以"limit 1,1"表示從第二位開始取長度為1的數也就是第二位數。

然後對資料進行去重,用distinct,再對去重後的資料進行降序排序,用limit 1,1 即從第二條開始,取一條資料,也就取到了第二高的薪水。

自己總結的

查詢第二高薪水

表名employee idsaraly 1100 2200 3300 預期結果 secondhighestsalary 200mysql select max salary as secondhighestsalary from select salary from employee where s...

SQL求第二高薪水

編寫乙個 sql 查詢,獲取 employee 表中第二高的薪水 salary idsalary 1100 2200 3300 例如上述 employee 表,sql查詢應該返回 200 作為第二高的薪水。如果不存在第二高的薪水,那麼查詢應返回 null。secondhighestsalary 20...

mysql查詢第二高薪水

問題描述 編寫一條sql,查詢應該返回 200 作為第二高的薪水。如果不存在第二高的薪水,那麼查詢應返回 null。表名為employee員工表 解決思路 有資料返回資料,無資料返回null。根據這個要求,我們可以考慮採用mysql的ifnull函式 摘自菜鳥教程 ifnull 函式用於判斷第乙個表...