sqlserver通用稳定的拼接SQL分页语句方案

经常接触到的mysql,拼接SQL分页语句直接在sql尾部加上limit x,x,既不污染原SQL,又够方便整洁。

最近做多数据源动态查询,需要支持多种数据库,分页问题随之而来,像mysql、oracle这些拼串方式不再赘述。

 

高版本的sqlserver(2012)其实也支持如mysql中limit这种分页方式。

offset /fetch nex:

select * from student
order by sno 
offset ((@pageIndex-1)*@pageSize) rows
fetch next @pageSize rows only;

如果确认sqlserver高于2012,可以使用这种方式进行分页。

如果低于这个版本,或兼容老版本,考虑利用row_number

row_number:

考虑兼容性、通用性,在踏过坑后,下面sql替换方案为最终版本。

将sql替换下列 原sql的位置 ,pageIndex :当前页的位置 pageSize:一页几条数据。

SELECT
FROM
SELECT
row number() over ( ORDER BY tempcolumn) temprownumber, *FROM
( 
SELECT top "+ ((pageIndex - 1) * pageSize + pageSize) +" tempcolumn = 0,* FROM (
    "+ 原sql的位置 +"
) t
) tt
) ttt
WHERE
temprownumber > "+ (pageIndex - 1) * pageSize

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值