sql server实现Mysql中的limit分页功能

Posted thebob

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server实现Mysql中的limit分页功能相关的知识,希望对你有一定的参考价值。

没有使用ORM框架前,一直使用原生sql分页,突然想起来,便随手一记吧。。

 

首先,在mysql 中有一种常见的分页方式

  • LIMIT总是设定为pageSize
  • OFFSET计算公式为pageSize * (pageIndex - 1)
SELECT id, name, gender, score
FROM students
ORDER BY score DESC
LIMIT 3 OFFSET 0;

但是在sql server中没有limit关键词,相对应的是TOP关键字,所以可以使用以下方法查询

方法一:在这里查询的是根据userID排序的第7,8,9条

SELECT  *
FROM    dbo.t_user
WHERE   userID IN ( SELECT TOP 3
                            userID
                    FROM    t_user
                    WHERE   userID NOT IN ( SELECT TOP 6
                                                    userID
                                            FROM    t_user ) )

 

方法二:其中的PageSize(分页的大小)和PageIndex(分页索引,初始假设为1)均为变量

SELECT  *
FROM    ( SELECT TOP PageSize 
                    *
          FROM      ( SELECT TOP [PageIndex*PageSize]
                                *
                      FROM      dbo.t_user
                      ORDER BY  id ASC
                    ) AS b
          ORDER BY  id DESC
        ) AS c
ORDER BY id ASC;

方法三:其中的PageSize(分页的大小)和PageIndex(分页索引,初始假设为1)均为变量

SELECT  *
FROM    ( SELECT    ROW_NUMBER() OVER ( ORDER BY userID ASC ) AS rownumber ,
                    *
          FROM      dbo.t_user
          WHERE     1 = 1
        ) AS t
WHERE   t.rownumber > (PageSize *(PageIndex-1))
        AND t.rownumber <= (PageSize *PageIndex)

 

以上是关于sql server实现Mysql中的limit分页功能的主要内容,如果未能解决你的问题,请参考以下文章

互联网公司都怎么实现分页的,拿 MySQL 使劲Limit?

如何使用 SQL Server 实现 LIMIT? [复制]

如何用sql语句 实现分页查询

MySQL借助于LIMIT和OFFSET实现的高性能分页功能

MyBatis怎样实现MySQL动态分页

MySql实现分页查询的SQL,mysql实现分页查询的sql语句 (转)