1. 程式人生 > >(2)查詢入職員工時間排名倒數第三的員工所有資訊

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


查詢入職員工時間排名倒數第三的員工所有資訊
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 distinct hire_date from employees order by hire_date desc limit 2,1
)

 

LIMIT m,n : 表示從第m+1條開始,取n條資料;

LIMIT n : 表示從第0條開始,取n條資料,是limit(0,n)的縮寫。

 

(1)首先需要加distinct去重。

假設 5-23(入職最晚日期)入職的有a,b,c 3人;

        5-22(入職第二晚日期)入職的有d,e 2人;

        5-21(入職倒數第三晚)入職的有f,g,h 3人;

        5-21前入職的若干...

若 不加distinct去重,那麼按照日期倒序,limit 2,1(從倒數第2行開始,取一條資料)的查詢結果為 5-23

加了distinct去重,會按入職日期進行分組,多個相同入職日期會分為一組,這樣limit 2,1的結果即為 5-21。

(2)外層的where條件中根據子查詢查出的倒數第三晚入職的日期,就能查詢出符合條