美文网首页
查找入职员工时间排名倒数第三的员工所有信息

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

作者: 兔子是黑老大 | 来源:发表于2019-02-16 17:42 被阅读0次

    tag 排序 截取数据

    题目

    查找入职员工时间排名倒数第三的员工所有信息
    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));

    思路

    看到这个题目会瞬间想到排序,只有进行排序之后才能进行选取第行的数据,但是和查找最晚入职员工的所有信息不同的是,这个无法使用像max()min()这种简单函数来实现了,这就涉及到了order by,进行排序后,你会陷入另外一个坑,那就是怎么找出第三行的数据,通过查找有这种方法使用limit可以截取某一部分的数据,limittop的区别是top是无法截取数据的只能从头获取指定行数的数据,除非你获取第一行数据,否则top是没办法截取一行数据的,所以只能通过limit来解决,既然可以截取好多行,那我就让limit后面的两个数据一样,这样不就截取了一行吗?然后你就会有这样的答案
    select * from employees where (hire_date = (select hire_date from employees order by hire_date desc limit 3,3))
    但为什么还是不对呢?这里要注意一点limit后面的行并不是从1开始的,是从0开始的,所以最终答案要改成
    select * from employees where (hire_date = (select hire_date from employees order by hire_date desc limit 2,2))

    总结

    1. order by 的升降序排列
    2. limit 截取查询的部分结果集合
    3. top 获取指定行数的数据集合

    相关文章

      网友评论

          本文标题:查找入职员工时间排名倒数第三的员工所有信息

          本文链接:https://www.haomeiwen.com/subject/ihrieqtx.html