題目:
編寫乙個 sql 查詢,獲取 employee 表中第二高的薪水(salary) 。
+----+--------+
| id | salary |
+----+--------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+----+--------+
例如上述 employee 表,sql查詢應該返回 200 作為第二高的薪水。
+---------------------+
| secondhighestsalary |
+---------------------+
| 200 |
+---------------------+
如果不存在第二高的薪水,那麼查詢應返回 null。
解題方法:
select
ifnull
( (select
distinct(salary)
from employee
order by salary desc
limit 1,1
),null
) as secondhighestsalary;
解題點:
1、比較薪水大小時,薪水要去重;
2、order by 數值排序時,從小到大,desc 反轉排序順序;
3、分頁查詢,舉個栗子:
select name
from students
order by score desc
limit 3 offset 0;
上述查詢limit 3 offset 0表示,對結果集從0號記錄開始,最多取3條。注意sql記錄集的索引從0開始。
如果要查詢第2頁,那麼我們只需要"跳過"頭3條記錄,也就是對結果集從3號記錄開始查詢,把offset設定為3,
在mysql中,limit 3 offset 6 還可以簡寫成 limit 6, 3。
4、當 mysql 查詢結果不存在時,返回的是空值。因為題目要求如果不存在第二高的薪水,那麼查詢應返回 null。所以,這裡可以使用 ifnull 語法:
ifnull(expression, value)
ifnull() 函式用於判斷第乙個表示式是否有結果集,如果沒有結果集,則返回value值。
第二高的薪水
第二高的薪水 編寫乙個 sql 查詢,獲取employee表中第二高的薪水 salary id salary 1 100 2 200 3 300 例如上述employee表,sql查詢應該返回200作為第二高的薪水。如果不存在第二高的薪水,那麼查詢應返回null。secondhighestsalar...
MySql 176 第二高的薪水
首先將salary列進行降序,然後用distinct去重,防止有多個薪水一樣 讓後題目要的是第二大的薪水,所以用offset跳過第一條查詢結果 然後用limit選取第一條查詢結果 但是這樣會有問題,如果表中不存在第二大會返回空表,但題目要求null 所以再用select語句查詢一次剛才的結果,如果存...
Leetcode Mysql 第二高的薪水
編寫乙個 sql 查詢,獲取 employee 表中第二高的薪水 salary 例如上述 employee 表,sql查詢應該返回 200 作為第二高的薪水。如果不存在第二高的薪水,那麼查詢應返回 null,如下圖。輸出結果 完善上述sql語句 select ifnull select distin...