• T-sql中的三种分页查询


     1 USE [APS_Future_FT]
     2 GO
     3 /****** Object:  StoredProcedure [dbo].[A_PagingAndSorting]    Script Date: 2013/11/7 21:42:16 ******/
     4 SET ANSI_NULLS ON
     5 GO
     6 SET QUOTED_IDENTIFIER ON
     7 GO
     8 -- =============================================
     9 -- Author:        <Author,,Name>
    10 -- Create date: <Create Date,,>
    11 -- Description:    <Description,数据库分页查询,>
    12 -- =============================================
    13 ALTER PROCEDURE [dbo].[A_PagingAndSorting]
    14     (
    15       @PageSize INT ,
    16       @PageIndex INT   --从1开始
    17     )
    18 AS 
    19     BEGIN
    20     -- SET NOCOUNT ON added to prevent extra result sets from
    21     -- interfering with SELECT statements.
    22         SET NOCOUNT ON;
    23 
    24 ----------------------------------------------第一种方法:借助row_number()函数-------------------------------
    25         SELECT  A.ID ,
    26                 A.NAME ,
    27                 A.Age
    28         FROM    ( SELECT    ROW_NUMBER() OVER ( ORDER BY t.ID ASC ) AS RowNumber ,
    29                             t.ID ,
    30                             t.NAME ,
    31                             t.Age
    32                   FROM      dbo.Test t
    33                 ) AS A
    34         WHERE   A.RowNumber BETWEEN ( @PageIndex - 1 ) * @PageSize + 1
    35                             AND     @PageIndex * @PageSize
    36 
    37 --------------------------------------------第二中方法:借助表变量-------------------------------------
    38         DECLARE @T TABLE
    39             (
    40               ID INT IDENTITY(1, 1) ,
    41               nid INT
    42             )   
    43 
    44         INSERT  @T
    45                 ( nid )
    46                 SELECT  Te.ID
    47                 FROM    dbo.Test Te
    48 
    49 
    50         SELECT  Te.ID ,
    51                 Te.NAME ,
    52                 Te.Age
    53         FROM    @T T
    54                 INNER JOIN dbo.Test Te ON Te.ID = T.nid
    55         WHERE   T.ID BETWEEN ( @PageIndex - 1 ) * @PageSize + 1
    56                      AND     @PageIndex * @PageSize
    57 
    58 --------------------------------------------第三种方法:top---------------------------------------
    59         SELECT  *
    60         FROM    ( SELECT TOP ( @PageSize )
    61                             *
    62                   FROM      ( SELECT TOP ( @PageIndex * @PageSize )
    63                                         *
    64                               FROM      dbo.Test A
    65                               ORDER BY  A.ID ASC
    66                             ) B
    67                   ORDER BY  B.ID DESC
    68                 ) C
    69         ORDER BY c.ID 
    70     END
  • 相关阅读:
    C struct 中字节对齐问题(转)
    蚁群算法,PSO算法以及两种算法可以融合的几种方法
    遗传及蚁群算法
    ListBox FAQ常用问题
    关于C#中ListBox控件重绘Item项
    创业艰难,问题多多
    asp.net客户端脚本验证小技巧
    防止ASP.NET按钮多次提交的办法
    鼠标点到文本框时的提示信息
    枚举的转换
  • 原文地址:https://www.cnblogs.com/qizhelongdeyang/p/3413380.html
Copyright © 2020-2023  润新知