题解 | #查找入职员工时间排名倒数第三的员工所有信息#
查找入职员工时间排名倒数第三的员工所有信息
http://www.nowcoder.com/practice/ec1ca44c62c14ceb990c3c40def1ec6c
先上代码:
select *
from employees
order by hire_date desc
limit 2,1
一般人可能思路和我差不多,都是按照orderby和limit的思路去写。先说一下limit单独使用以及limit和offset组合使用的差距:
- 当 limit和offset组合使用的时候,limit后面只能有一个参数,表示要取的的数量,offset表示要跳过的数量。
- 当limit后面跟两个参数的时候,第一个数表示要跳过的数量,后一位表示要取的数量。
实际上这个写法存在一个bug就是可能入职时间相同的员工可能不止一人。
推荐写法如下:
select *
from employees
where hire_date =
(select distinct hire_date
from employees
order by hire_date desc
limit 1 offset 2)