题解 | #查找入职员工时间排名倒数第三的员工所有信息#
查找入职员工时间排名倒数第三的员工所有信息
http://www.nowcoder.com/practice/ec1ca44c62c14ceb990c3c40def1ec6c
这题走了一个小坑,就是我用了升序,我认为是求入职时间倒数第三小的(也就是第三早的),其实题目表达的倒数第三是指倒数第三晚的入职员工,也就是入职时间倒数第三晚的(也就是时间倒数第三大的)。
如果明白我前面说的话,那么很显然想到的就是先排序,那么排序很自然就能想到是降序(把最晚的放在前面),然后limit offset获取第三个数据就可以了。那么首先limit肯定限制的数量为1,其次跳过的数量为2(也就是跳过第一行和第二行)。
offset:参数指定要返回的第一行的偏移量。第一行的偏移量为0,而不是1
这样得到一个可行的查询语句:
select *
from employees
order by hire_date DESC
limit 1 offset 2;
还有一个方法就是下面的查询语句;
select *
from employees
order by hire_date DESC
limit 2,1;
第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。
例如:SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15
这条上面语句的解析为:检索记录行为3