MySQL 之 limit 、offset

题目: 查找入职员工时间排名倒数第三的员工所有信息

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 1 OFFSET 2              -- 去掉排名倒数第一第二的时间,取倒数第三
);    

limit和offset用法 mysql里分页一般用limit来实现,

select* from test LIMIT 3; 当 limit后面跟一个参数的时候,该参数表示要取的数据的数量。 表示直接取前三条数据,类似sqlserver里的top语法。

以下的两种方式均表示取2,3,4三条条数据。
1.select* from test LIMIT 1,3;
当limit后面跟两个参数的时候,第一个数表示要跳过的数量,后一位表示要取的数量。

2.select * from test LIMIT 3 OFFSET 1;(在mysql 5以后支持这种写法)
当 limit和offset组合使用的时候,limit后面只能有一个参数,表示要取的的数量,offset表示要跳过的数量 。
全部评论
用例都跑不过的拿来发题解干嘛...??
1 回复 分享
发布于 2024-09-06 23:15 英国
因为有多人同一天入职的情况
点赞 回复 分享
发布于 03-03 12:33 广东
select * from employees order by hire_date desc limit 1 offset 2; 我不太明白为啥我这个SQL和楼主代码输出的数据是一致,但为啥这个题过不了
点赞 回复 分享
发布于 2024-12-27 10:02 广东
如果有多个倒数第二或者倒数第一呢?不适用吧
点赞 回复 分享
发布于 2024-02-29 22:11 北京
大佬好,这个按道理不是limit3,offset 1吗?为什么正确答案是LIMIT 1 offset 2呢?
点赞 回复 分享
发布于 2022-11-26 20:36 宁夏
这个答案只适合查日期不相同的数据。如果入职日期相同,查询到的结果是经过系统默认排序后的倒数第三项,结果只显示这一条,会有误差。
点赞 回复 分享
发布于 2021-09-23 15:17
你这个错了 你在这条数据后边多加几条比这个日期晚的相同日期入职的就查不到正确的结果
点赞 回复 分享
发布于 2021-07-03 00:01
你这个不是所有的
点赞 回复 分享
发布于 2021-04-14 09:26
如果有几个人同年同月同日入职呢
点赞 回复 分享
发布于 2020-04-10 17:52

相关推荐

点赞 评论 收藏
分享
评论
267
28
分享

创作者周榜

更多
牛客网
牛客企业服务