描述

有一个员工employees表简况如下:

emp_no birth_date first_name last_name gender hire_date
10001 1953-09-02 Georgi Facello M 1986-06-26
10002 1964-06-02 Bezalel Simmel F 1985-11-21
10003 1959-12-03 Parto Bamford M 1986-08-28
10004 1954-05-01 Christian Koblick M 1986-12-01



1、查找入职员工时间排名倒数第三的员工所有信息

select * from employees 
where hire_date = (
select distinct hire_date from employees order by hire_date desc limit 2,1
)

LIMIT m,n : 表示从第m+1条开始,取n条数据;

LIMIT n : 表示从第0条开始,取n条数据,是limit(0,n)的缩写。

(1)首先需要加distinct去重。因为倒数第1、2天中每天都可能包含很多员工,如果不去重,排名倒数第三的可能仍然是最晚那天入职的员工。

(2)倒数第三天也可能包含很多员工,需要全部输出,可以用等号查询出符合条件的所有员工信息。


2、查找最晚入职员工的所有信息

与上面同样的道理

select * from employees 
where hire_date = (
select distinct hire_date from employees order by hire_date desc limit 0,1
)

或者

select * from employees 
where hire_date = (select max(hire_date)
from employees)