加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sqlserver中的翻页

发布时间:2020-12-12 15:54:45 所属栏目:MsSql教程 来源:网络整理
导读:sqlserver中没有类似oralce中的伪列。所以不能用这个属性来进行分页。 这是我最近搞的一个关于sqlserver的分页,不知道对你有没有帮助: 我们知道,sqlserver中,top关键字是用来取前n条记录的。如果想得到查询结果集中的前20条数据,则sql语句如下: select

sqlserver中没有类似oralce中的伪列。所以不能用这个属性来进行分页。

这是我最近搞的一个关于sqlserver的分页,不知道对你有没有帮助:

我们知道,sqlserver中,top关键字是用来取前n条记录的。如果想得到查询结果集中的前20条数据,则sql语句如下:
select top 20 *?? from x_user ;
方法1:
对于一般的表,id都是基于一种规则顺序往下走的。一般情况下,是自动增一的。这里也就只能讨论这种情况,对于个别的情况,如果以后项目遇到了,我会再继续玩玩得。不过对于目前绝大多数的id自增的情况是适用的。所以,我们可以钻一个空子:
select top 20 *?? from x_user order by uid ;

这样,就可以根据uid来排序进行取数据的操作。这是第一页的情况。由于id是自增的,所以第二页的第一条记录的id肯定比上一页的大。并且都是顺序排列的。因此,第二页的sql可以如下表示:
select top 20 *?? from x_user where uid > 上一页最后的id order by uid ;

第三页,第四页...... 以此类推。只要找到上一页的最后一个id就行了。

哈哈。相当简单的吧。这是下一页的操作。至于上一页,用法是一样的。不过这里需要注意的是:上一页的条数的那个id需要减去2倍的每页显示条数。这是为什么呢?

举例说明:

1,2,3,4,5??? 第一页? 最后的id = 5
6,7,8,9,10?? 第二页? 最后的id = 10
11,12,13,14 ,15? 第三页? 最后的id = 15

我们从第一页翻到第二页的sql是:select top 20 *?? from x_user where uid > 5 order by uid ;记住,这个id是5!!
假如我们从第三页想返回第二页。第三页的最后一个id是15。所以15-5=10 。正好是每页显示条数的2倍。
换句话说,从第三页返回到第二页,这个sql语句中的id其实记录的是第一页的最后一个id。所以需要减去2倍的每页显示条数。

方法2 :
用between ... and ... 关键字。
select top 20 *?? from x_user where uid between 10 and 20 order by uid;
这样直接就能得到啦。省事吧?不过这2种都仅限于id是那种规则自增的方式。如果你非要搞个随机数,日期什么的。恐怕就不行了。不过谁还用那玩意啊?对于绝大多数的项目都好使就行啊。哈哈

好了。就这么,继续忙项目了。:)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读