SQL练习1:查找最晚入职员工的所有信息
题目链接:牛客网
题目描述
查找最晚入职员工的所有信息,为了减轻入门难度,目前所有的数据里员工入职的日期都不是同一天(sqlite
里面的注释为–,mysql
为comment
)
表结构如下:
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`));
解法一
如果只是按照题目的要求来做的话,因为数据里员工入职的日期都不是同一天,那么只需要对hire_date
列进行降序排列,取第一行数据即可。
SELECT * FROM employees
ORDER BY hire_date DESC LIMIT 1;
解法二
上面的解法只能应用在日期都不是同一天的情况下,如果最晚入职的有很多人,那么数据必然不准确,因此,我们可以根据子查询来筛选hire_date
等于最晚日期的那些数据。
SELECT * FROM employees
WHERE hire_date = (SELECT MAX(hire_date) FROM employees);