•
在编写
Web
应用程序等系统时,会涉及到与数据库的交互,如果数据库中数据量很大的话,一次检索所有的记录,会占用系统很大的资源,因此常常采用分页语句:需要多少数据就只从数据库中取多少条记录。以下是
Sql
Server,Oracle
和
MySQL
的分页语句
(
从数据库表中的第
M
条数据开始取
N
条记录
)
:
MYSQL
• My sql 数据库最简单,是利用 mySQL 的 LIMIT 函数 ,LIMIT [offset,] rows 从数据库表中 M 条记录开始检索 N 条记录的语句为:
SELECT [ 列名列表 ] FROM 表名称 LIMIT M,N
MYSQL
• My sql 数据库最简单,是利用 mySQL 的 LIMIT 函数 ,LIMIT [offset,] rows 从数据库表中 M 条记录开始检索 N 条记录的语句为:
SELECT [ 列名列表 ] FROM 表名称 LIMIT M,N
•
例如从表
Sys_option
(
主键为
sys_id
)
中从
10
条记录还是检索
20
条记录,语句如下:
select * from sys_option limit 10,20
Oracle
select * from sys_option limit 10,20
Oracle
•
从数据库表中第
M
条记录开始检索
N条记录
SELECT *
FROM (
SELECT ROWNUM rownum_,t1.*
FROM(
SELECT * FROM table ORDER BY table.id DESC
)row_
WHERE rownum<=?
)
WHERE rownum_>=?
SELECT *
FROM (
SELECT ROWNUM rownum_,t1.*
FROM(
SELECT * FROM table ORDER BY table.id DESC
)row_
WHERE rownum<=?
)
WHERE rownum_>=?
•
例如从表
employees(
主键为
employee_id
)
中从
11
条记录还是检索
20
条记录,语句如下:
![](https://img-blog.csdn.net/20151103125203762?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
SELECT *
FROM (
SELECT rownum r_,row_.*
FROM(
SELECT * FROM emploees ORDER BY employee_id DESC
)row_
WHERE rownum<=20
)
WHERE r_>=11
SQLServer
SELECT *
FROM ( SELECT TOP 20 *
FROM (SELECT TOP 29 * FROM Sys_option order by sys_id desc )t1) t2
Order by sys_id asc
SELECT *
FROM (
SELECT rownum r_,row_.*
FROM(
SELECT * FROM emploees ORDER BY employee_id DESC
)row_
WHERE rownum<=20
)
WHERE r_>=11
SQLServer
•
从数据库表中的第
M
条记录开始取
N
条记录,利用
Top
关键字
(
如果
Select
语句中既有
top
,又有
order by
,则是从排序好的结果集中选择
)
:
SELECT *
FROM ( SELECT Top N *
FROM (SELECT Top (M + N - 1) * FROM 表名称 Order by 主键 desc ) t1 ) t2
Order by 主键 asc
例如从表
Sys_option
(
主键为
sys_id
)
中从
10
条记录还是检索
20
条记录,语句如下:SELECT *
FROM ( SELECT Top N *
FROM (SELECT Top (M + N - 1) * FROM 表名称 Order by 主键 desc ) t1 ) t2
Order by 主键 asc
SELECT *
FROM ( SELECT TOP 20 *
FROM (SELECT TOP 29 * FROM Sys_option order by sys_id desc )t1) t2
Order by sys_id asc