题目描述

有一个员工 employees 表简况如下:

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

建表语句如下:

  1. CREATE TABLE `employees` (
  2. `emp_no` int(11) NOT NULL,
  3. `birth_date` date NOT NULL,
  4. `first_name` varchar(14) NOT NULL,
  5. `last_name` varchar(16) NOT NULL,
  6. `gender` char(1) NOT NULL,
  7. `hire_date` date NOT NULL,
  8. PRIMARY KEY (`emp_no`));

请你查找 employees 表中最晚入职员工的所有信息,上述示例输出入下:

查找最晚入职员工的所有信息 - 图2

答案解析

思路一

使用 ORDER BY DESC hire_date 列按照降序对查询的结果集进行排序,使用 LIMIT 语句取一条结果并返回

我们可以使用 LIMIT 1 或者是 LIMIT 0,1

SQL 语句如下:

  1. SELECT * FROM employees
  2. ORDER BY hire_date DESC
  3. LIMIT 0,1;

不过这种方式只能查询到一条数据,hire_data 可能有多个相同的记录存在

思路二

使用子查询

我们可以使用子查询,先获取最晚的 hire_date,然后把与其相等的记录全部查询出来

SQL 语句如下:

  1. SELECT * FROM employees
  2. WHERE hire_date = (SELECT MAX(hire_date) FROM employees);