zoukankan      html  css  js  c++  java
  • Sql Server 分页

    1。ROW_NUMBER方式

    1     WITH Paging AS
    2     (
    3         SELECT *
    4                , ROW_NUMBER() OVER (order by ID DESC) AS RowNumber
    5         FROM [TableName]
    6     ) 
    7     SELECT *
    8     FROM Paging
    9     WHERE RowNumber > 0 AND RowNumber <= 10

     

    2。OFFSET 方式

    1   SELECT *
    2   FROM [TableName]
    3   ORDER BY ID DESC
    4   OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY;

     这种方式有一定的灵活性,可以使用变量传入分页参数,如:

    1   ORDER BY ID DESC 
    2   OFFSET ( @PageIndex - 1 ) * @PageSize ROWS
    3   FETCH NEXT  @PageSize ROWS ONLY

    以下是OFFSET的官方解释:(参考地址:https://msdn.microsoft.com/zh-cn/magazine/gg699618(SQL.110).aspx)

    OFFSET { integer_constant | offset_row_count_expression } { ROW | ROWS }

    指定在从查询表达式中开始返回行之前,将跳过的行数。OFFSET 子句的参数可以是大于或等于零的整数或表达式。ROW 和 ROWS 可以互换使用。

    FETCH { FIRST|NEXT } <行计数表达式> { ROW|ROWS } ONLY

    指定在处理 OFFSET 子句后,将返回的行数。FETCH 子句的参数可以是大于或等于 1 的整数或表达式。ROW 和 ROWS 可以互换使用。同样,FIRST 和 NEXT 可以互换使用。

    • ORDER BY 是使用 OFFSET 和 FETCH 子句所必需的。

    • OFFSET 子句必须与 FETCH 一起使用。永远不能使用 ORDER BY … FETCH。

    • TOP 不能在同一个查询表达式中与 OFFSET 和 FETCH 一起使用。

    • OFFSET/FETCH 行计数表达式可以是将返回整数值的任何算术、常量或参数表达式。该行计数表达式不支持标量子查询。

  • 相关阅读:
    一些有用的正则
    UNION ALL合表查询
    远程桌面连接:出现身份验证错误,要求的函数不受支持,可能是由于CredSSP加密Oracle修正的解决方法
    Ubuntu20.04安装、配置openvas
    awvs13破解安装、批量扫描脚本
    剑指05题
    时间复杂度o(1), o(n), o(logn), o(nlogn)
    Intellij IDEA 注释模板
    Explain详解
    Hibernate中get()和load()的区别
  • 原文地址:https://www.cnblogs.com/hzz521/p/4485353.html
Copyright © 2011-2022 走看看