在解答里看到有不用LIMIT的用法,我尝试着理解了一波,那位兄弟的思路是对的,但是代码个人认为有一点小问题,所以稍微改进了一下代码如下,欢迎讨论,此方法关键点在于将employees表复制为两张一模一样的表进行比较,从而得出hire_date排名倒数第三的值。
注意【hire_date排名倒数第三 = 从晚到早排列hire_date在所有时间中排第三 = 比它晚的入职时间只有两个 = 大于它的入职时间只有两个】
下列代码筛选出最晚的三个入职时间,然后再取其中的最小值,即为倒数第三的hire_date
SELECT* FROM employees WHERE hire_date = (SELECT MIN(hire_date) FROM employees WHERE emp_no IN (SELECT a.emp_no FROM employees a,employees b WHERE a.emp_no != b.emp_no AND a.hire_date < b.hire_date GROUP BY a.emp_no HAVING COUNT(*) < 3))