問題:
寫一個 SQL 查詢語句赦肃,獲取 Employee表中第二高的Salary 。
列名 | 類型 |
---|---|
Id | int |
Salary | int |
Id | Salary |
---|---|
1 | 100 |
2 | 200 |
3 | 300 |
例如, 上面給出的 Employee 表,查詢應(yīng)該返回 200 作為第二高的Salary。如果沒有第二高的Salary,那么查詢應(yīng)該返回 null坏挠。
SecondHighestSalary |
---|
200 |
分析:
這個需要一點一點的來寫,其實也不難
①先寫基本的查詢語句邪乍,并且用別名 AS 來自定義查詢出的列名降狠。
②然后使用distinct來排除重復(fù)的元素
③用Order By 來排序,默認(rèn)是從小到大庇楞,那么我們加個 Desc
④limit 1限制我們只需要一個值榜配,offset 1讓我們從第二個元素開始算
⑤用ifNull(expr1,expr2)函數(shù),來使查詢不到的變?yōu)閚ull吕晌。這里注意一下別名需要換一下地方蛋褥。
最后是這樣的:
SELECT IFNULL(
(SELECT DISTINCT Salary
FROM Employee ORDER BY Salary desc LIMIT 1 OFFSET 1),NULL)
as SecondHighestSalary