SQL分页语句的三种方案

2022-05-24 0 352

方法一:

复制代码 代码如下:

SELECT TOP 页大小 *

FROM table1

WHERE id NOT IN

          (

          SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id

          )

ORDER BY id

方法二:

复制代码 代码如下:

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

方法二倒序:

复制代码 代码如下:

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

方法三

复制代码 代码如下:

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

免责声明:
1、本网站所有发布的源码、软件和资料均为收集各大资源网站整理而来;仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 不得使用于非法商业用途,不得违反国家法律。否则后果自负!

2、本站信息来自网络,版权争议与本站无关。一切关于该资源商业行为与www.niceym.com无关。
如果您喜欢该程序,请支持正版源码、软件,购买注册,得到更好的正版服务。
如有侵犯你版权的,请邮件与我们联系处理(邮箱:skknet@qq.com),本站将立即改正。

NICE源码网 MsSql SQL分页语句的三种方案 https://www.niceym.com/61697.html