
点击上"蓝字"关注我们!
现有一张员工信息表(employees),需要编写一个查询语句,查找出入职时间排名倒数第三的员工的所有信息。
员工信息表中包含的字段如下:
Id int not null
Name varchar(20) not null
hire_date date not null
示例数据如下:

第一步,查找出排名倒数第三的入职时间。
select distinct hire_date
from employees
order by hire_date desc
limit 2,1;
因为同一天可能有多个人办理入职,所以需要使用distinct去重。
limit n表示从第0条开始,取n条记录。
limit m,n表示从第m+1条开始,取n条记录。
limit 2,1就表示从第3条开始,取1条记录即取第三条记录
将入职时间使用order by降序排列后再用limit 2,1取第三条记录就可以得到排名倒数第三的入职时间。

第二步,根据第一步查询出的排名倒数第三的入职时间,使用where型子查询就可以查找出入职时间排名倒数第三的员工的所有信息。
select * from employees
where hire_date=
(
select distinct hire_date
from employees
order by hire_date desc
limit 2,1
);

除了使用distinct去重外,也可使用group by去重,因此也可使用如下查询语句:
select * from employees
where hire_date=
(
select hire_date
from employees
group by hire_date
order by hire_date desc
limit 2,1
);



本文介绍如何通过SQL查询找出员工信息表中入职时间排名倒数第三的员工详情。首先定位该入职日期,再以此筛选出对应的员工记录。
1482

被折叠的 条评论
为什么被折叠?



