MYSQL篇 獲取第二高的薪水

2021-10-02 07:45:11 字數 1337 閱讀 4637

題目:

編寫乙個 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...