前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于客户端接口分页sql语句

关于客户端接口分页sql语句

作者头像
Ryan-Miao
发布2018-03-13 11:33:38
1.2K0
发布2018-03-13 11:33:38
举报
文章被收录于专栏:Ryan MiaoRyan Miao

今天突然翻到为客户端写分页数据的sql,发现其实逻辑不对。列表是按照id降序的

当时这样写的:

代码语言:javascript
复制
#翻上一页:
select 字段 from 表 where id>lastId order by id desc limit pageSize
#翻下一页:
select 字段 from 表 where id<lastId order by id desc limit pageSize

lastId是临近id,即上一页是最上面的id,下一页是最下面的id

pageSize是页面条数

显然,逻辑有问题。

如果pageSize=3;id列表是这样的:

代码语言:javascript
复制
 14 13 12 11 10 9 8 7 6 5 4 3 2 1

因为id降序,因此翻页是这样的:

代码语言:javascript
复制
1 第一页:14 13 12
2 第二页:11 10  9
3 第三页:8  7   6 
...

但实际上,后端接收三个参数:lastId,pageSize,direct。direct=0表示上一页,1下一页。

lastId=9,并向下一页,则id<9 降序,得8 7 6,没问题;

上一页,则id>9,如果只是降序则取出:14 13 12,显然应该是升序,即:10 11 12,然后再降序,返回给客户端:12 11 10

因此,应该这样写

代码语言:javascript
复制
1 #翻上一页:
2 select * from 
3 (select 字段 from 表 where id>lastId order by id  limit pageSize) temp
4 order by id desc
5 #翻下一页:
6 select 字段 from 表 where id<lastId order by id desc limit pageSize

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 因此,应该这样写:
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档