牛客:数据库实战—1—查找最晚入职员工的所有信息、查找入职员工时间排名倒数第三的员工所有信息

牛客:数据库实战—1—查找最晚入职员工的所有信息、查找入职员工时间排名倒数第三的员工所有信息1、查找最晚入职员工的所有信息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,`hir…

大家好,又见面了,我是你们的朋友全栈君。

1、查找最晚入职员工的所有信息

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`));
SELECT * FROM employees ORDER BY hire_date DESC LIMIT 1;

牛客:数据库实战---1---查找最晚入职员工的所有信息、查找入职员工时间排名倒数第三的员工所有信息

limit关键字用法:https://blog.csdn.net/BlackPlus28/article/details/83057392

SELECT * FROM employees WHERE hire_date = (SELECT MAX(hire_date) FROM employees);

牛客:数据库实战---1---查找最晚入职员工的所有信息、查找入职员工时间排名倒数第三的员工所有信息

简单想,上面两种方法都可以解决的。但limit查询有局限性。但使用limit方法查询只能查出最后一条数据,但要是最后一天入职多员工,就会出现问题。因此使用子查询更为合理,先将入职日期最大的全部查询来作为条件再次查询就可以。

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

SELECT * FROM employees WHERE hire_date = (
     SELECT DISTINCT hire_date FROM employees ORDER BY hire_date DESC LIMIT 2,1) 

表结构:

牛客:数据库实战---1---查找最晚入职员工的所有信息、查找入职员工时间排名倒数第三的员工所有信息

查询结果:

牛客:数据库实战---1---查找最晚入职员工的所有信息、查找入职员工时间排名倒数第三的员工所有信息

思路:首先要去重,不然查出来的只是员工倒数的第三个员工而已,只有去重之后,才能查出入职时间倒数第三的员工。

 

如果有不同看法,或者是文中写错的地方,麻烦大佬留言指正文章错误,谢谢!!!

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/147225.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号