`
tntxia
  • 浏览: 1507217 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

SQL语句分页

阅读更多
建立表:
CREATE TABLE [TestTable] (
 [ID] [int] IDENTITY (1, 1) NOT NULL ,
 [FirstName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
 [LastName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
 [Country] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
 [Note] [nvarchar] (2000) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
 
插入数据:(100万条)
SET IDENTITY_INSERT TestTable ON
declare @i int
set @i=1
while @i<=1000000
begin
    insert into TestTable([id], FirstName, LastName, Country,Note) values(@i, 'FirstName_XXX','LastName_XXX','Country_XXX','Note_XXX')
    set @i=@i+1
end
SET IDENTITY_INSERT TestTable OFF

------------------------------------
分页方案一:(利用Not In和SELECT TOP分页)

当前页数从0编号

(默认ASC排序)
//当前页数=0时用SQL:
SELECT TOP 每页记录数 *
FROM TestTable
ORDER BY ID

//当前页数>0时用SQL:
SELECT TOP 每页记录数 *
FROM TestTable
WHERE (ID NOT IN
          (SELECT TOP 每页记录数*当前页数 id    //当前页数必须>0
         FROM TestTable
         ORDER BY id))
ORDER BY ID
**************************
DESC排序时,需要改成:
//当前页数=0时用SQL:
SELECT TOP 每页记录数 *
FROM TestTable
ORDER BY ID DESC

//当前页数>0时用SQL:
SELECT TOP 每页记录数 *
FROM TestTable
WHERE (ID NOT IN
          (SELECT TOP 每页记录数*当前页数 id    //当前页数必须>0
         FROM TestTable
         ORDER BY id DESC))
ORDER BY ID DESC
-------------------------------------
分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高!严重推荐

当前页数从0编号

(默认ASC排序)
SELECT TOP 每页记录数 *
FROM TestTable
WHERE (ID >=
          (SELECT MAX(id)
         FROM (SELECT TOP (每页记录数*当前页数)+1 id   //当前页数从0编号
                 FROM TestTable
                 ORDER BY id) AS T))
ORDER BY ID
*************************
DESC排序时,需要改成:
SELECT TOP 每页记录数 *
FROM TestTable
WHERE (ID <=
          (SELECT MIN(id)
         FROM (SELECT TOP (每页记录数*当前页数)+1 id   //当前页数从0编号
                 FROM TestTable
                 ORDER BY id DESC) AS T))
ORDER BY ID DESC
================================================
不管用哪种方法,设置条件都在最里面的select里
如:
把id>=100 且 FirstName='FirstName_XXX'的记录分页
(默认ASC排序)
SELECT TOP 每页记录数 * FROM TestTable
WHERE (ID >=
          (SELECT MAX(id)
         FROM (SELECT TOP (每页记录数*当前页数)+1 id   //当前页数从0编号
                 FROM TestTable
                 where id >=100 and FirstName='FirstName_XXX' //设置条件
                 ORDER BY id) AS T))
ORDER BY ID
 
分享到:
评论

相关推荐

    Oracle SQL语句分页问题

    ### Oracle SQL语句分页问题详解 #### 一、引言 在数据库查询操作中,分页是一项常用且重要的功能,特别是在数据量较大的情况下。它能够有效地提高用户体验,并减轻服务器负担。本文将针对Oracle数据库中的SQL分页...

    oracle一条sql语句分页

    需要注意的是,ROWNUM的计算是在SQL语句执行的过程中完成的,并且一旦为某一行分配了ROWNUM值后,这个值就不会再改变。这意味着,即使对表进行排序操作,ROWNUM的值也不会受到影响。 #### 2. 使用 ROWNUM 实现简单...

    分页sql语句以及sql语句语法大全

    提供详细的sql语句,常用sql语句,sql语句的进阶过程

    SQL Server 存储过程及Oracle SQL语句分页

    而Oracle的分页SQL语句更为简洁,适合在不支持存储过程或者简单场景下使用。但需要注意的是,Oracle的`ROWNUM`方式在处理有序数据时可能会有性能问题,因为`WHERE ROWNUM`条件可能无法充分利用索引。 在实际应用中...

    一条sql语句分页

    用的是sql server2000 自带的NorthWind表,你要做的就是传一条普普通通的sql语句,思想是oracle 的伪列,但是sql server2000根本就没有伪列,于是我就想了个办法,哈哈。欢迎修改。如果大家有好的分页思想欢迎交流...

    分页 jar包,jdbc ,hibernate(sql语句分页)

    基于sql语句的分页,效率更高,此jar包包含常用分页格式 使用方法在jboss5的博客中

    sqlserver分页查询语句

    sqlserver分页查询语句;sqlserver分页查询语句;sqlserver分页查询语句;

    Oracle Sql语句转换成Mysql Sql语句

    本项目提供了一个Java源码工具,能够帮助用户便捷地将Oracle SQL语句转换为MySQL SQL语句。 Oracle SQL与MySQL SQL的主要差异在于以下几个方面: 1. **数据类型**:Oracle支持的数据类型如NUMBER、LONG、RAW等在...

    几条常见的数据库分页SQL 语句

    几条常见的数据库分页SQL 语句,针对oracle,sqlserver,mysql三种常见数据库的分页显示。

    关于SQL Server SQL语句查询分页数据的解决方案

    关于SQL Server SQL语句查询分页数据的解决方案 在日常工作中,我们经常需要处理大量数据,并从中获取特定页面的数据。特别是在Web应用开发中,为了提高用户体验,通常会将数据进行分页显示。针对这一需求,本文将...

    数据库分页SQL语句实现

    ### 数据库分页SQL语句实现 在开发MIS系统或Web应用系统时,经常会遇到对数据库进行分页处理的需求。这是因为数据量庞大时,一次性加载所有数据会给系统带来很大的负担,同时也会影响用户体验。因此,分页技术成为...

    在SQL Server中通过SQL语句实现分页查询

    ### 在SQL Server中通过SQL语句实现分页查询 #### 一、背景介绍 在数据库应用开发中,分页查询是一种常见的技术手段,用于改善用户体验并提高系统性能。特别是当数据量庞大时,一次性加载所有数据到前端不仅会导致...

    分享三种高效率SQL语句分页方法

    以下是三种常用的高效率SQL语句分页方法: 1. **基于行号的分页(利用自增ID)** 这种方法适用于表中存在自动增长的ID字段。首先,定义两个变量Page和PageCount,Page表示当前页数,PageCount表示每页的数据条数。...

    sql语句写分页通用代码

    SQL语句的分页通用代码实现是将数据集分割成多个部分,每次只加载一部分(即一页)到前端进行显示。这种方式在大数据量的查询中尤为重要,因为它避免了一次性加载所有数据可能导致的性能问题。 标题中的“sql语句写...

    jdbc 分页 sql语句

    ### JDBC分页SQL语句详解 #### 一、引言 在数据库操作中,分页查询是非常常见且重要的一个功能。对于大型应用而言,一次性加载大量数据不仅会消耗过多资源,还可能导致用户体验下降。因此,合理地进行分页处理显得...

    LINQ To SQL实现分页效果源码

    由于LINQ延迟执行,直到你真正遍历结果集时才会执行SQL语句。 ```csharp foreach (var customer in pagedQuery) { // 处理每个customer对象 } ``` 5. **优化性能**:在某些情况下,为了提高性能,你可能需要...

    数据库真分页SQL语句

    例如,在SQL Server中,获取第10页,每页显示10条记录的真分页SQL语句可能如下: ```sql SELECT * FROM ( SELECT *, ROW_NUMBER() OVER(ORDER BY SomeColumn) AS RowNum FROM YourTable ) AS TmpTable WHERE...

    使用SQL语句实现通用分页查询

    使用SQL语句实现通用分页查询,支持模糊查询等。

    SqlServer数据库中的分页语句

    本篇将深入探讨SQL Server实现分页查询的语句及其工作原理。 首先,我们要明白SQL Server分页查询的基本思想:一次查询只返回所需页面的数据,而不是一次性获取所有数据,这样可以减少网络传输量,减轻服务器压力,...

    c#\book\实现分页的sql语句

    本文将深入探讨如何在C#\book项目中,利用SQL语句来实现数据分页。 ### SQL分页基本原理 SQL分页主要通过限制查询结果的数量来实现。在SQL Server中,常用的分页方法有两种:一种是使用`OFFSET`和`FETCH`关键字;...

Global site tag (gtag.js) - Google Analytics