查询分页的几种sql语句

sql server 中的分页查询sql语句不跟mysql 一样,mysql 用 limit 可以实现查询sql分页。如:

select * from news where id>=(select id from news limit 250000,1) limit 10; //相对执行效率高
select * from news limit 250000,10;

mysql 中 limit总是设定为pageSize;offset计算公式为pageSize * (pageIndex - 1),但我今天主要讲的不是mysql ,是 sql server 中的分页。在sql server中没有limit关键词,相对应的是 top 关键字,所以可以使用以下方法查询:
第一种:

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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值