zoukankan      html  css  js  c++  java
  • Leetcode SQL_#176_第二高的薪水

    Leetcode SQL_#176_第二高的薪水

    Contents

    题目


    解答

    select distinct Salary as SecondHighestSalary
    from Employee
    order by Salary desc
    limit 1 offset 1

    知识点:
    offset关键字,跳过排序当中的第一个,那么得到的就是第二大的数字

    问题:

    • 这里边几个关键字的顺序问题,比如as应该放在哪里?limit和offset有没有严格的先后顺序?
      * as要放在字段名称之后,from之前,因为我是重命名了一个字段
      * 实验证明,limit必须在前,offset在后,不然会报语法错误
    • 答案存在的漏洞:可能表中不同的工资只有1种,用了offset 1就是有问题的。

    使用临时表

    第二行括号里的select查询出来的结果就是一个临时表

    select 
    (select distinct Salary from Employee order by Salary desc limit 1 offset 1) 
    as SecondHighestSalary;

    使用ifnull()函数

    ifnull(A,B):判断A是否是null,如果是null会返回默认值B

    select
    ifnull((select distinct Salary from Employee order by Salary desc limit 1 offset 1),null)
    as SecondHighestSalary;

    注意:ifnull里边的第一项是一个select查询出来的临时表,需要加上括号

  • 相关阅读:
    10年后编程还有意义吗?
    专访Jeffrey Richter:Windows 8是微软的重中之重
    x86汇编指令脚本虚拟机
    基于容器的持续交付管道
    NET Core 整合Autofac和Castle
    数据结构与算法1
    Redis集群
    react + iscroll5
    MongoDB
    WebComponent
  • 原文地址:https://www.cnblogs.com/Howfars/p/15430998.html
Copyright © 2011-2022 走看看