zoukankan      html  css  js  c++  java
  • 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
    不积跬步无以至千里,千里之堤毁于蚁穴。 你是点滴积累成就你,你的丝丝懒惰毁掉你。 与诸君共勉
  • 相关阅读:
    mysql设置用户密码规则
    jsonp格式前端发送和后台接受写法
    MySql数据库中正则表达式
    linux中服务(service)管理
    第50课 C++对象模型分析(上)
    第49课 多态的概念和意义
    第42课
    第41课
    深入理解MyBatis中的一级缓存与二级缓存
    hibernate一级缓存和二级缓存的区别
  • 原文地址:https://www.cnblogs.com/haoHaoStudyShare/p/7441315.html
Copyright © 2011-2022 走看看