首页 > 试题广场 >

分页查询employees表,每5行一页,返回第2页的数据

[编程题]分页查询employees表,每5行一页,返回第2页的数据
  • 热度指数:79194 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
分页查询employees表,每5行一页,返回第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`));
示例1

输入

drop table if exists  `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`));
INSERT INTO employees VALUES(10001,'1953-09-02','Georgi','Facello','M','1986-06-26');
INSERT INTO employees VALUES(10002,'1964-06-02','Bezalel','Simmel','F','1985-11-21');
INSERT INTO employees VALUES(10003,'1959-12-03','Parto','Bamford','M','1986-08-28');
INSERT INTO employees VALUES(10004,'1954-05-01','Chirstian','Koblick','M','1986-12-01');
INSERT INTO employees VALUES(10005,'1955-01-21','Kyoichi','Maliniak','M','1989-09-12');
INSERT INTO employees VALUES(10006,'1953-04-20','Anneke','Preusig','F','1989-06-02');
INSERT INTO employees VALUES(10007,'1957-05-23','Tzvetan','Zielinski','F','1989-02-10');
INSERT INTO employees VALUES(10008,'1958-02-19','Saniya','Kalloufi','M','1994-09-15');
INSERT INTO employees VALUES(10009,'1952-04-19','Sumant','Peac','F','1985-02-18');
INSERT INTO employees VALUES(10010,'1963-06-01','Duangkaew','Piveteau','F','1989-08-24');
INSERT INTO employees VALUES(10011,'1953-11-07','Mary','Sluis','F','1990-01-22');

输出

10006|1953-04-20|Anneke|Preusig|F|1989-06-02
10007|1957-05-23|Tzvetan|Zielinski|F|1989-02-10
10008|1958-02-19|Saniya|Kalloufi|M|1994-09-15
10009|1952-04-19|Sumant|Peac|F|1985-02-18
10010|1963-06-01|Duangkaew|Piveteau|F|1989-08-24
select 
    * 
from
    employees
limit
    5*(2-1),5

发表于 2020-07-11 00:16:49 回复(0)
根据题意,每行5页,返回第2页的数据,即返回第6~10条记录,以下有两种方法可以解决:
方法一:利用 LIMIT 和 OFFSET 关键字。LIMIT 后的数字代表返回几条记录,OFFSET 后的数字代表从第几条记录开始返回(第一条记录序号为0),也可理解为跳过多少条记录后开始返回。
SELECT * FROM employees LIMIT 5 OFFSET 5
方法二:只利用 LIMIT 关键字。注意:在 LIMIT X,Y 中,Y代表返回几条记录,X代表从第几条记录开始返回(第一条记录序号为0),切勿记反。
SELECT * FROM employees LIMIT 5,5

编辑于 2017-07-24 09:58:36 回复(10)

由于每一页有5行,注意到SQL中行号是从0开始的,因此从第5行开始就是第二页了
因此使用LIMIT 5,5,即方法一:
SELECT * FROM employees LIMIT 5,5;
也可以使用LIMIT m OFFSET n :表示从第n行开始(包括)读取m行,如果不足m行,则读取到表最后停止
该语句等价于 LIMIT n,m;
在SQL Server和Access中可以使用TOP语句,但SQLite不支持。
 方法二:
SELECT * FROM employees
LIMIT 5 OFFSET 5;
发表于 2018-04-02 10:54:01 回复(0)
其实就是对limit进行范围选取,
select * from employees limit (2-1)*5,5
发表于 2018-03-11 19:01:32 回复(0)
select * from  employees limit 5,5

发表于 2017-08-31 12:03:01 回复(0)
select * from employees
limit (2 - 1) * 5, 5;
发表于 2017-09-14 05:05:24 回复(4)
limit子句用于限制查询结果返回的数量,常用于分页查询
考查分页查询:limit
select * from tableName limit i,
tableName:表名 
i:为查询结果的索引值(默认从0开始),当i=0时可省略i 
n:为查询结果返回的数量 # i与n之间使用英文逗号","隔开
所以:select * from employees limit 5,5
发表于 2020-04-18 09:54:10 回复(0)
一种分页思路,默认题目可以拓展到,返回第100页的数据。当然,前提是emp_no是从10001开始编号。
select * from employees where emp_no > 10005 limit 0, 5;
编辑于 2020-05-17 22:02:32 回复(1)
在Mysql中:
select * from employees limit 5,5;
解题思路:每页5行,返回第二页,即返回第6-10行数据,利用limit x,y 函数,代表从x+1条记录kaishi
编辑于 2019-12-01 18:19:52 回复(0)
select *
from employees
limit 5, 5
发表于 2022-04-17 20:00:20 回复(0)
select * from employees limit 5 offset 5;

select * from employees limit5,5;

两种方式均可 ,个人觉得还是第二种好点
发表于 2021-12-22 15:33:30 回复(0)
select * from employees limit 5 offset 5
发表于 2021-07-08 17:00:59 回复(0)
考点:limit 关键字的使用
方法一:结合offset:offset表示偏移,从第几条记录开始
select * from employees limit 5 offset 5
方法二:只用limit  limit(x,y) 从第x条记录(不包含x)后开始,返回y条数据
select * from employees limit 5, 5



发表于 2021-03-27 16:41:44 回复(0)
忽略5行返回5行
select*
from employees
limit 5 offset 5;
发表于 2021-01-25 14:34:53 回复(0)
-- limit子句用于限制查询结果返回的数量,常用于分页查询
-- limit start, length
select *
from employees
limit 5,5
;
发表于 2020-07-17 17:10:07 回复(0)
select * from employees limit 5,5
select * from table limit m,n 
其中m是指记录开始的index,从0开始,表示第一条记录 
n是指从第m+1条开始,取n条。
发表于 2018-04-18 00:04:25 回复(0)
SELECT *
FROM employees
ORDER BY emp_no
LIMIT 5,5;               -- 逗号前是偏移量,逗号后是取的行数

发表于 2025-02-14 16:39:05 回复(0)
为什么他每次问的题目我都觉得听不懂
发表于 2022-06-06 21:26:01 回复(0)
limit分页:
select * from employee limit (curPage-1)*Pagesize,Pagesize;
curPage:当前页   
Pagesize:每页多少行
例如:假设 Pagesize=5
当前页为1,(1-1)*5=0 ,第一页从第0行开始
当前页为2,(2-1)*5=5,第二页从第5行开始
当前页为3,(3-1)*5=10,第三页从第10行开始
当前页为4,(4-1)*5=15,第四页从第15行开始
...
所以这里为:
SELECT * FROM employees 
limit 5,5


发表于 2022-03-21 00:33:13 回复(0)
SELECT
	a.* 
FROM
	employees a
	JOIN ( SELECT emp_no FROM employees LIMIT 5, 5 ) b 
	ON a.emp_no = b.emp_no;

发表于 2021-12-12 15:31:12 回复(1)