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
posted @ 2017-08-27 20:02  这个手杀不太0  阅读(535)  评论(0编辑  收藏  举报