题目描述
查找最晚入职员工的所有信息,为了减轻入门难度,目前所有的数据里员工入职的日期都不是同一天(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);
可以把重复的也查出来
知识点:
- 子查询可用于过滤条件。
- 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** 开始。