SELECT TOP 页大小 *
FROM table1
WHERE id NOT IN
          (
          SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id
          )
ORDER BY id
这个页数怎么填写,不知道从何得来?

解决方案 »

  1.   

    declare @pagesize int,@pageIndex int,@sql nvarchar(max)
    set @sql='
    SELECT TOP '+rtrim(@pagesize)+' * 
    FROM table1 
    WHERE id NOT IN 
              ( 
              SELECT TOP '+rtrim(@pagesize*(@pageIndex-1))+' id FROM table1 ORDER BY id 
              ) 
    ORDER BY id'exec(@sql)
      

  2.   

    方法1:
    适用于 SQL Server 2000/2005
    SELECT TOP 页大小 *
    FROM table1
    WHERE id NOT IN
              (
              SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id
              )
    ORDER BY id
    方法2:
    适用于 SQL Server 2000/2005
    SELECT TOP 页大小 *
    FROM table1
    WHERE id >
              (
              SELECT ISNULL(MAX(id),0) 
              FROM 
                    (
                    SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id
                    ) A
              )
    ORDER BY id
    方法3:
    适用于 SQL Server 2005
    SELECT TOP 页大小 * 
    FROM 
            (
            SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM table1
            ) A
    WHERE RowNumber > 页大小*(页数-1)
    说明,页大小:每页的行数;页数:第几页。使用时,请把“页大小”和“页大小*(页数-1)”替换成数字