1. 程式人生 > >SQL挑戰一 : 查找最晚入職員工的所有信息

SQL挑戰一 : 查找最晚入職員工的所有信息

varchar int asc limit char 數據庫表 desc esc har

以上數據庫表:

  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)

SQL挑戰一 : 查找最晚入職員工的所有信息