mysql中limit与offset的用法
标识符说明
- limit:最大数量
- offset:偏移量
使用案例
- 需求:
查找employees里入职员工时间排名倒数第三的员工所有信息
- 建表语句
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`));
- 查询语句
//如果不使用offset,可以用子查询,明显影响效率
select * from (select * from employees order by hire_date desc limit 3) as tmp order by tmp.hire_date asc limit 1;
//使用limit+offset
SELECT * FROM employees ORDER BY hire_date DESC LIMIT 1 offset 2;
//仅使用limit,其实与上述一样
SELECT * FROM employees ORDER BY hire_date DESC LIMIT 2,1;
使用方法
查询从第b开始的最多a条记录
- SELECT * FROM table ORDER BY column DESC LIMIT a offset b;
- SELECT * FROM table ORDER BY column DESC LIMIT b,a;
其他使用场景(分页查询)
查询第page页pageSize条数据
- SELECT * FROM table ORDER BY column DESC LIMIT pageSize offset (pageSize*page);
- SELECT * FROM table ORDER BY column DESC LIMIT (pageSize*page),pageSize;