以上数据库表:
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`));
SQL : 查询最晚入职员工的所有信息
此题有坑(慎重),考量的逻辑思维,有两种查询语法,针对不同的数据环境。
环境一:最晚入职员工只有一个人;即当天单个数据
---如果只有一人,那么选择排序后按照条件(降序)提取(limit)第一个就可以了。 limit两种使用方法,(limit x)第一个直接设置值,值为多少就提取多少,(limit x,y)第二个是从某个位置开始提取多少条。
使用 order by(默认是升序)进行统一排,然后条件排序 desc (降序) / asc(升序),order by 必不可少,条件在择其一。然后用 limit 提取数据即可。
select * from employees order by id(字段名) desc / asc limit x(提取数量)
select * from employess order by hire_date desc limit 0,1
select * from employess order by hire_date desc limit 1
这两种方法是一样的结果(只针对以上查询条件)。当有多个数据,提取位置初始值变得时候,结果就不一样。
环境二:入职最晚那一天有多个人;即当天多个数据
使用where 条件 并且 子查询即可,查询字段 (max)最大值即可
select * from employess where id = (select max(hire_date) from employess)
select * from employess where hire_date = (select max(hire_date) from employess)
原文地址:https://www.cnblogs.com/yanqz/p/9271354.html