查找入職員工時間排名倒數第三的員工全部信息
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
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條數據;code
LIMIT n : 表示從第0條開始,取n條數據,是limit(0,n)的縮寫。it
(1)首先須要加distinct去重。ast
假設 5-23(入職最晚日期)入職的有a,b,c 3人;class
5-22(入職第二晚日期)入職的有d,e 2人;date
5-21(入職倒數第三晚)入職的有f,g,h 3人;select
5-21前入職的若干...im
若 不加distinct去重,那麼按照日期倒序,limit 2,1(從倒數第2行開始,取一條數據)的查詢結果爲 5-23數據
加了distinct去重,會按入職日期進行分組,多個相同入職日期會分爲一組,這樣limit 2,1的結果即爲 5-21。查詢
(2)外層的where條件中根據子查詢查出的倒數第三晚入職的日期,就能查詢出符合條件的員工信息。