SqlServer分页方法

/// <summary>
/// 使用虚拟表进行分页查询,不适用明确知道列名的查询
/// </summary>
/// <param name="sql">sql 如"select * from name where 1=1"</param>
/// <param name="pageIndex">页码 如"1"</param>
/// <param name="pageSize">条数 如"100"</param>
/// <returns>DataTable</returns>
public static DataTable SelectPaging(String sql, int pageIndex, int pageSize)
{
    //定义虚拟表名称
    string temporaryTable = "#" + randString();
    //创建您虚拟表
    string sqlPaging = "select identity(int) as ZZZZZ, * into " + temporaryTable + " from (select TOP 100 Percent * from ( " + sql + ") a) a ";
    //使用虚拟表进行分页查询
    sqlPaging += "select * from " + temporaryTable + " a WHERE 1=1 "
        + "AND a.ZZZZZ >= " + pageIndex * pageSize + " AND a.ZZZZZ <= " + ((pageIndex + 1) * pageSize - 1) + " ";
    //删除虚拟表
    sqlPaging += "DROP TABLE " + temporaryTable;
    //执行Sql语句 SelectCustomSql为执行sql的方法需自己定义
    DataTable dt = SelectCustomSql(sqlPaging);
    //判断返回结果是否为空
    if (dt != null)
    {
        //移除标识列
        dt.Columns.Remove("ZZZZZ");
    }
    //返回结果
    return dt;
}

其他分页方法百度上比较多。

时间: 2024-12-17 05:04:13

SqlServer分页方法的相关文章

SqlServer 常用分页方法总结

SqlServer 常用分页方法总结 下面示例总结了,SqlServer数据库 常用分页方法,仅供学习参考 A. 使用 RowNumber 和 Between And 组合分页: /********** 使用 RowNumber 和 Between And 组合分页 **********/ CREATE PROC proc_FuzzySearchAndPaging @pageIndex int, --页索引 @pageSize int, --页大小 @SearchKey Nvarchar(10)

SqlServer 经常使用分页方法总结

SqlServer 经常使用分页方法总结 以下演示样例总结了,SqlServer数据库 经常使用分页方法,仅供学习參考 A. 使用 RowNumber 和 Between And 组合分页: /********** 使用 RowNumber 和 Between And 组合分页 **********/ CREATE PROC proc_FuzzySearchAndPaging @pageIndex int, --页索引 @pageSize int, --页大小 @SearchKey Nvarch

SQLserver分页查询实例

Sqlserver数据库分页查询一直是Sqlserver的短板,闲来无事,想出几种方法,假设有表ARTICLE,字段ID.YEAR...(其他省略),数据53210条(客户真实数据,量不大),分页查询每页30条,查询第1500页(即第45001-45030条数据),字段ID聚集索引,YEAR无索引,Sqlserver版本:2008R2 第一种方案.最简单.普通的方法: SELECT TOP 30 * FROM ARTICLE WHERE ID NOT IN(SELECT TOP 45000 ID

sqlserver分页查询

SQL Server 2005引入的新方法. SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY keyField DESC) AS rowNum, * FROM tableName) AS t WHERE rowNum > start AND rowNum <= end 其中: keyField为表tableName的一个字段(最好是主键): tableName为查询的表名: DESC可以按需换为ASC: start为要取的结果集的起始记录 en

SQL调优学习之——sqlserver分页从低效到高效

背景 以前都是使用mysql和oracle,对sqlserver的使用不多.最近因项目原因,要读取其他项目的数据库,取出某个门的开关历史记录,而对方使用的是sqlserver,所以研究起了sqlserver的分页,经过几次实践,慢慢的从低效的分页写到了高效的分页. 表结构 history表 历史记录ID:id(唯一引索) 操作时间:time 开门或关门:flag 由谁操作:user_Id 属于哪个设备:device_id 下面我们先介绍四种分页的方法,以[一种低效]——[两种较高效]——[一种高

sqlserver 分页模糊查询

   积少成多 ----  仅以此致敬和我一样在慢慢前进的人儿 问题: 在sqlserver 进行模糊查询,出现问题 最初使用“concat”,进行拼串操作,如下所示: <select id = "queryCount" resultType="int" > select count(*) from t_user <where> <if test = "queryText!= null"> loginacct

sqlserver分页;mysql分页;orcale分页 的sql 查询语句

1 一,sqlserver分页: 2 SELECT TOP (每页显示的数据条数) *FROM 表名 WHERE (ID NOT IN (SELECT TOP ((当前页码 -1)*每页显示的数据条数 -1) ID FROM 表名 AS 表名1_1 ORDER BY ID)) ORDER BY ID; 3 二:mysql分页 4 select * from 表名 where id limit((当前页码 -1)*每页显示的数据条数,当前页码 * 每页显示的数据条数); 5 三:orcale分页

C# 分页方法

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Web; namespace System.Web.Mvc //注意修改为与HtmlHelper相同的命名空间{ /// <summary> /// 静态 分页方法 /// </summary> public static class MyHtmlHelper { //HtmlHelper的扩展

sqlserver分页:mysql分页:orcale分页

一,sqlserver分页: SELECT   TOP (每页显示的数据条数) *FROM 表名 WHERE   (ID NOT IN (SELECT TOP ((当前页码 -1)*每页显示的数据条数 -1) ID FROM  表名 AS 表名1_1  ORDER BY ID)) ORDER BY ID; 二:mysql分页     select  * from 表名 where id limit((当前页码 -1)*每页显示的数据条数,当前页码 * 每页显示的数据条数); 三:orcale分页