题目描述
查找入职员工时间排名倒数第三的员工所有信息
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 | 1989-09-12 |
题解
select * from employees where hire_date=
(
select hire_date from
(
select (@rowNum:=@rowNum+1) as rowNo,
hire_date from employees,
(select (@rowNum:=0) ) t order by hire_date desc
) a
where rowNo = 3
) b;
此方法报错:
Traceback (most recent call last):
File "a.py", line 12, in
cursor = conn.execute(f.read())
sqlite3.OperationalError: unrecognized token: ":"
不明白 " : " 为什么会报错。换成了以下方法:
select * from employees where hire_date=
(
select max(hire_date) from employees where hire_date<
(
select max(hire_date) from employees where hire_date<
(
select max(hire_date) from employees
)
)
)
通过两次比较来获得第三大的值。