zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    如何在Ubuntu上安装配置和使用Docker
    在Ubuntu 20.04 LTS Focal Fossa上安装Netdata Monitoring
    CG-CTF 480小时精通C++
    IDA 动态调试
    CG-CTF 签到
    CG-CTF WxyVM
    buu 达芬奇 && ROT
    buu firmware
    buu [MRCTF2020]keyboard
    buu signin
  • 原文地址:https://www.cnblogs.com/TheBob/p/10309229.html
Copyright © 2011-2022 走看看