leetcode 176 第二高的薪水
- 题目
编写一个SQL查询,获取'Employee'表中第二高的薪水。 +----+--------+ | Id | Salary | +----+--------+ | 1 | 100 | | 2 | 200 | | 3 | 300 | +----+--------+ 例如上述'Employee'表,SQL查询应该返回'200'作为第二高的薪水。 如果不存在第二高的薪水,那么查询应返回'null'。 +---------------------+ | SecondHighestSalary | +---------------------+ | 200 | +---------------------+
- 解
select ifnull( ( select distinct Salary from Employee order by Salary desc limit 1,1 ), null ) as SecondHighestSalary;
distinct
列出不同的值,用于返回唯一不同的值select distinct 列名 from 表名;
order by
用于根据指定的列对结果集进行排序
默认排序升序,如果需要降序可加关键字select * from 表名 order by 列名;
DESC
select * from 表名 order by 列名 desc;
limit
指定返回某行或某几行select * from 表名 limit 5;
limit 5
指示mysql
返回不多于5
行,从第一行(行0)
开始,给出为指定的要检索的最大行数,如果没有足够的行,只返回能返回的几行。
如果需要返回下一个3
行,需执行
也可使用替代语法select * from 表名 limit 5,3;
select * from 表名 limit 3 offset 5;
ifnull
判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值。select ifnull(表达式,表达式为null时要返回的值);