1. 程式人生 > >牛客:資料庫實戰---1---查詢最晚入職員工的所有資訊、查詢入職員工時間排名倒數第三的員工所有資訊

牛客:資料庫實戰---1---查詢最晚入職員工的所有資訊、查詢入職員工時間排名倒數第三的員工所有資訊

1、查詢最晚入職員工的所有資訊

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 ORDER BY hire_date DESC LIMIT 1;

limit關鍵字用法:https://blog.csdn.net/BlackPlus28/article/details/83057392

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

簡單想,上面兩種方法都可以解決的。但limit查詢有侷限性。但使用limit方法查詢只能查出最後一條資料,但要是最後一天入職多員工,就會出現問題。因此使用子查詢更為合理,先將入職日期最大的全部查詢來作為條件再次查詢就可以。

2、查詢入職員工時間排名倒數第三的員工所有資訊

SELECT * FROM employees WHERE hire_date = (
     SELECT DISTINCT hire_date FROM employees ORDER BY hire_date DESC LIMIT 2,1) 

表結構:

查詢結果:

思路:首先要去重,不然查出來的只是員工倒數的第三個員工而已,只有去重之後,才能查出入職時間倒數第三的員工。

 

如果有不同看法,或者是文中寫錯的地方,麻煩大佬留言指正文章錯誤,謝謝!!!