• SQL分页语句三方案



    方法一:

    1
    2
    3
    4
    5
    6
    7
    SELECT TOP 页大小 *
    FROM table1
    WHERE id NOT IN
              (
              SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id
              )
    ORDER BY id

     方法二:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    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

     方法二倒序:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT TOP 页大小 *
    FROM table1
    WHERE ID <=
        (
        SELECT ISNULL(MIN(ID),(SELECT MAX(ID) FROM table1 ))
        FROM
            (
            SELECT TOP (页大小*(页数-1)) ID FROM tbl_files ORDER BY ID DESC
            ) A
        )
    ORDER BY ID DESC

     方法三

    1
    2
    3
    4
    5
    6
    SELECT TOP 页大小 *
    FROM
            (
            SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM table1
            ) A
    WHERE RowNumber > 页大小*(页数-1)

    分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句
    分页方案一:(利用Not In和SELECT TOP分页)   效率次之,需要拼接SQL语句
    分页方案三:(利用SQL的游标存储过程分页)    效率最差,但是最为通用

     

    PS:这三条方案是在网上搜到的,做分页的时候选用的方案二,发现直接套用语句不能满足要求,因为根据发帖顺序,是需要倒序排列的,就是最新发帖需要排到最前面,于是仿照方案二改成了倒序,希望对大家有所帮助。

  • 相关阅读:
    localStorage、sessionStorage详解,以及storage事件使用
    企业和开发人员究竟该如何适应web标准?
    平面设计常用制作尺寸
    git命令
    TCP/IP、Http、Socket的区别
    canvas
    《千克》
    《小数的加法》
    fiddler设置代理
    《分数的基本性质》
  • 原文地址:https://www.cnblogs.com/baiduligang/p/4247028.html
Copyright © 2020-2023  润新知