mysql分页思想_解析分页思想+分页实战

一、排除Top分页法(自命名,非规范)

思想:所谓“排除Top分页”,主要依靠“排除”和Top这个两大核心步骤。首先查询当前页码之前的数据,然后将该数据从总数据中排除掉,在从剩下的数据中获取前N条记录,就可以得到当前页码的数据。

举例-分页条件:每页显示2条记录,查看第3页

以SQLServer语法实现并说明步骤:

步骤1:编写基础查询语句并按照字段字段进行排序,排序字段会作为后续的数据筛选条件

1 select * from tableName order by id

步骤2:获取一个公式,该公式用于计算当前页码之前所有页面的总记录数

例子的当前页为第3页,那么在第3页之前有2页,并且每页显示2条,最后可得出之前页面总共为:2乘以2等于4条记录。然后根据逻辑得出计算公式:(当前页码-1)*每页显示条数,根据例子分页条件得出:(3-1)*2

步骤3:使用步骤2的公式加到步骤1语句中作为Top的数值,从而可以查出当前页之前的所有数据。

1  select top ((3-1)*2) * from tableName order by id

步骤4:在总数据中排除掉“当前页之前的所有数据”,然后进行排序

1 select * fromtableName2

3 Where id not in ( Select top ((3-1)*2) * id from order byid )4

5 Order by id

步骤5:在步骤4的语句中,取出前N条(每页显示的条数)

1 select top 2 * fromtableName

3 Where id not in ( select top ((3-1)*2) * id from order byid )

5 Order by id

SQLite数据库写法:

1 select * from tableName whereid2 not in (select did from DishInfo order by did limit (3-1)*2)3 order by did limit 2

注意:SQLite数据库中没有Top关键字,而使用limit关键字来取前N条。

Oracle数据库写法:

1 Select * from

2 Select * from tableName where id not in(3 Select id from (Seletc id from tableName where rownum<=(3-1)*2 order byid )4 ) order by id ) where rownu

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值