176. Second Highest Salary【取表中第二高的值】,sql,limit,offset
Write a SQL query to get the second highest salary from the Employee
table.
+----+--------+ | Id | Salary | +----+--------+ | 1 | 100 | | 2 | 200 | | 3 | 300 | +----+--------+
For example, given the above Employee table, the query should return 200
as the second highest salary. If there is no second highest salary, then the query should return null
.
+---------------------+ | SecondHighestSalary | +---------------------+ | 200 | +---------------------+
题意分析:
取表中第二高的值,先进行排序,然后取第二个值即可,我们需要使用LIMIT 和 OFFSET
首先我们先了解下LIMIT 和 OFFSET
比如下面的sql语句:
① selete * from testtable limit 2,1;
② selete * from testtable limit 2 offset 1;
注意:
1.数据库数据计算是从0开始的
2.offset X是跳过X个数据,limit Y是选取Y个数据
3.limit X,Y 中X表示跳过X个数据,读取Y个数据
这两个都是能完成需要,但是他们之间是有区别的:
①是从数据库中第三条开始查询,取一条数据,即第三条数据读取,一二条跳过
②是从数据库中的第二条数据开始查询两条数据,即第二条和第三条。
SELECT DISTINCT Salary FROM Employee ORDER BY Salary DESC LIMIT 1 OFFSET 1
这样做是取表中第二个数字为空时,即表中只有一个数字,或者全部数字都是一样的并列第一,无法返回空值
SELECT (SELECT DISTINCT Salary FROM Employee ORDER BY Salary DESC LIMIT 1 OFFSET 1) AS secondHighestSalary
不积跬步无以至千里,千里之堤毁于蚁穴。
你是点滴积累成就你,你的丝丝懒惰毁掉你。
与诸君共勉