题目描述

查找最晚入职员工的所有信息,为了减轻入门难度,目前所有的数据里员工入职的日期都不是同一天(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`));

方法一:使用子查询

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

可以把重复的也查出来

知识点:

  1. 子查询可用于过滤条件。
  2. max函数是聚集函数,一般用于数值比较和日期比较中,还可用于文本比较,忽略NULL列。

方法二 排序

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

这种不能把入职时间相同的也查出来,可以使用子查询改进

SELECT * from employees WHERE hire_date = (SELECT hire_date FROM employees ORDER BY hire_date DESC LIMIT 1 OFFSET 0) 
#### 知识点:
1. DESC 是降序排列,用在字段后面
2. LIMIT 语法有三种
    1. LIMIT 5 :返回不超过五行的记录
    2. LIMIT 10,5: 返回行号10后面的5行数据(如果有的话),行号从**0** 开始
    3. LIMIT 5 OFFSET 10 : 返回行号10后面的5行数据(如果有的话),行号从**0** 开始。