Oracle, SQL Server, My SQL数据分页查询语句
2008-08-21 11:57
806 查看
经常在网站上看到“上一页/下一页”,实现方法主要是每次到数据库中得到当前页面的数据,下面总结Oracle, SQL Server 和MySQL的分页SQL语句如下:
Oracle:
方法一:
SELECT * FROM
(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
WHERE ROWNUM <= 40
)
WHERE RN >= 21;
方法二:
SELECT * FROM
(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
)
WHERE RN between 21 and 40
公认第二种方法效率没有第一种高。原因是第二种要把子查询执行完,而第一种方法子查询执行到Rownum=40后就结束了。
MySQL:
SELECT * FROM TABLE_NAME LIMIT 10, 20
表示从第11条数据开始取20条数据返回,limit后的2个参数含义为:起点和步长,即从那条数据开始,取多少条数据,再如取前20条数据:SELECT * FROM TABLE_NAME LIMIT 0, 20
SQL Server2000:
SELECT TOP @pagesize * FROM TABLE_NAME WHERE id not in (SELECT TOP @pagesize*(@page-1) id FROM TABLE_NAME ORDER BY id) ORDER BY id
SQL Server 2005:
方法一:
SELECT ...
FROM
(
SELECT ROW_NUMBER() OVER (ORDER BY ID asc) AS RowNum, ......
FROM TABLE_NAME
) AS T
WHERE T.RowNum> 10 and T.RowNum<= 20
方法二:
WITH DataList AS
(
SELECT ROW_NUMBER() OVER (ORDER BY O.ID DESC)AS RowNum, ......
FROM .....
WHERE ......
)
SELECT ......
FROM DataList
WHERE RowNum BETWEEN 10 AND 20
Oracle:
方法一:
SELECT * FROM
(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
WHERE ROWNUM <= 40
)
WHERE RN >= 21;
方法二:
SELECT * FROM
(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
)
WHERE RN between 21 and 40
公认第二种方法效率没有第一种高。原因是第二种要把子查询执行完,而第一种方法子查询执行到Rownum=40后就结束了。
MySQL:
SELECT * FROM TABLE_NAME LIMIT 10, 20
表示从第11条数据开始取20条数据返回,limit后的2个参数含义为:起点和步长,即从那条数据开始,取多少条数据,再如取前20条数据:SELECT * FROM TABLE_NAME LIMIT 0, 20
SQL Server2000:
SELECT TOP @pagesize * FROM TABLE_NAME WHERE id not in (SELECT TOP @pagesize*(@page-1) id FROM TABLE_NAME ORDER BY id) ORDER BY id
SQL Server 2005:
方法一:
SELECT ...
FROM
(
SELECT ROW_NUMBER() OVER (ORDER BY ID asc) AS RowNum, ......
FROM TABLE_NAME
) AS T
WHERE T.RowNum> 10 and T.RowNum<= 20
方法二:
WITH DataList AS
(
SELECT ROW_NUMBER() OVER (ORDER BY O.ID DESC)AS RowNum, ......
FROM .....
WHERE ......
)
SELECT ......
FROM DataList
WHERE RowNum BETWEEN 10 AND 20
相关文章推荐
- Oracle, SQL Server, My SQL数据分页查询语句
- Oracle, SQL Server, My SQL数据分页查询语句汇总
- Oracle, SQL Server, My SQL如何实现数据分页查询语句
- Oracle, SQL Server, My SQL如何实现数据分页查询语句
- (转)Oracle, SQL Server, My SQL数据分页查询语句
- Oracle、SQL server、MySQL数据库中分页查询的SQL语句
- 腾讯云图片鉴黄集成到C# SQL Server 怎么在分页获取数据的同时获取到总记录数 sqlserver 操作数据表语句模板 .NET MVC后台发送post请求 百度api查询多个地址的经纬度的问题 try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会 不会被执行,什么时候被执行,在 return 前还是后? js获取某个日期
- 关于SQL Server SQL语句查询分页数据的解决方案
- 数据库Oracle、Sql Server单表树形结构数据查询语句
- Oracle查询重复记录,分页和去掉重复数据的查询语句
- MySQL、Oracle、SQLServer 数据分页查询语句
- oracle12c JSON数据 使用SQL语句实现多表左外连接 显示无效数据 分页查询
- MySQL、Oracle和SQL Server的分页查询语句
- Oracle、SQL server、MySQL数据库中分页查询的SQL语句
- 各种数据库(MYSQL、Oracle、DB2、SQL Server、PostgreSQL)的分页查询语句
- Oracle、SQL server、MySQL数据库中分页查询的SQL语句
- MySQL、Oracle和SQL Server的分页查询语句
- MySQL、Oracle和SQL Server的分页查询语句
- Mysql Oracle sqlserver 数据分页查询语句
- 关于SQL Server SQL语句查询分页数据的解决方案