第二高的薪水

1.使用子查询和 LIMIT 子句

SELECT
    (SELECT DISTINCT
            Salary
        FROM
            Employee
        ORDER BY Salary DESC
        LIMIT 1 OFFSET 1) AS SecondHighestSalary

distinct对相同工资去重

imit X 表示读取X个数据

limit X,Y 中X表示跳过X个数据,读取Y个数据

limit X offset Y 中X表示读取X个数量, Y 表示跳过Y个数据

2.使用 IFNULLLIMIT 子句

SELECT
    IFNULL(
      (SELECT DISTINCT Salary
       FROM Employee
       ORDER BY Salary DESC
        LIMIT 1 OFFSET 1),
    NULL) AS SecondHighestSalary

IFNULL(expr1,expr2)          
如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2。IFNULL()返回一个数字或字符串值,取决于它被使用的上下文

IF(expr1,expr2,expr3)          
如果expr1是TRUE(expr1<>0且expr1<>NULL),那么IF()返回expr2,否则它返回expr3。IF()返回一个数字或字符串值,取决于它被使用的上下文。  

isnull(expr1)

如expr 为null,那么isnull() 的返回值为 1,否则返回值为 0。 

NULLIF(expr1,expr2)   

    如果expr1 = expr2 成立,那么返回值为NULL,否则返回值为expr1。这和CASE  WHEN expr1 = expr2 THEN NULL ELSE   expr1 END相同。

ifnull注意事项:

SELECT IFNULL(score,0) FROM student WHERE ID = 4;

使用IFNULL、SUM函数等需要确保有查询记录,否则也将返回null值  ,不会返回0

使用以下方式避免返回null值

SELECT IFNULL((SELECT score FROM student WHERE ID = 4),0);      

3.

select max(Salary) SecondHighestSalary from Employee where Salary < (select max(Salary) from Employee)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值