秋招SQL实战:2.查找入职员工时间排名倒数第三的员工所有信息
题目描述:
查找入职员工时间排名倒数第三的员工所有信息:
CREATE TABLE employees
(
emp_no
int(11) NOT NULL,
birth_date
date NOT NULL,
first_name
varchar(14) NOT NULL,
last_name
varchar(16) NOT NULL,
gender
char(1) NOT NULL,
hire_date
date NOT NULL,
PRIMARY KEY (emp_no
));
输入描述:
无
输出描述:
emp_no | birth_date | first_name | last_name | gender | hire_date |
---|---|---|---|---|---|
10005 | 1955-01-21 | Kyoichi | Maliniak | M | 1994-09-15 |
题目解析:
解法一:
select * from employees
order by hire_date desc
limit 1 offset 2;
注:
limit和offset用法:
mysql里分页一般用limit来实现,select* from test LIMIT 3;
当 limit后面跟一个参数的时候,该参数表示要取的数据的数量。 表示直接取前三条数据,类似sqlserver里的top语法。
以下的两种方式均表示取2,3,4三条条数据:
1.select* from test LIMIT 1,3;
当limit后面跟两个参数的时候,第一个数表示要跳过的数量,后一位表示要取的数量。
2.select * from test LIMIT 3 OFFSET 1;(在mysql 5以后支持这种写法)
当 limit和offset组合使用的时候,limit后面只能有一个参数,表示要取的的数量,offset表示要跳过的数量 。
解法二:
入职时间相同的员工可能不止一人
select * from employees
where hire_date = (
select distinct hire_date
from employees
order by hire_date desc
limit 1 offset 2;