SQL挑战一 : 查找最晚入职员工的所有信息

以上数据库表:

  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)

猜你喜欢

转载自www.cnblogs.com/yanqz/p/9271354.html