题目描述
有一个员工 employees 表简况如下:
建表语句如下:
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`));
请你查找 employees 表中最晚入职员工的所有信息,上述示例输出入下:
答案解析
思路一
使用 ORDER BY DESC 将 hire_date 列按照降序对查询的结果集进行排序,使用 LIMIT 语句取一条结果并返回
我们可以使用 LIMIT 1
或者是 LIMIT 0,1
SQL 语句如下:
SELECT * FROM employees
ORDER BY hire_date DESC
LIMIT 0,1;
不过这种方式只能查询到一条数据,hire_data 可能有多个相同的记录存在
思路二
使用子查询
我们可以使用子查询,先获取最晚的 hire_date,然后把与其相等的记录全部查询出来
SQL 语句如下:
SELECT * FROM employees
WHERE hire_date = (SELECT MAX(hire_date) FROM employees);