如何先根据一定的排序然后从当前ID往下取数据?

sjx10010 2016-12-19 01:17:56
比如user表
id name created_on
2c9f942c59012b2101590566923b13ef Tom 2016-12-19
2c9f942c58f71f470158fc3fc7451214 Jack 2016-12-17
2c9f942c58d752450158e2b2b1ba5c19 Ben 2016-12-15
2c9f942c58d752450158d8786b2d0d82 Mike 2016-12-13
2c9f942c58becd6e0158ccea7a820267 Smith 2016-12-18
2c9f942c51e7821c0151e795b86b0003 James 2016-12-14
2c9f942c51ecbe520151ed07ce80007f Kobe 2016-12-18
2c9f942c52270989015233bd1c4f00f4 Curry 2016-12-19

比如说第一页两条数据, 根据时间倒序, 取到的是Tom 和Curry 两个19日的数据
然后我下拉刷新再取两条, 应该取的是两个18日的数据, 以此类推,因为数据是实时刷新的,
直接简单的倒序然后limit是会有重复数据的.

因为数据库是UUID作为ID, 不能把ID作为排序依据,
一开始我是想用rownum的, 取 2c9f942c51ecbe520151ed07ce80007f Kobe 2016-12-18 往下的两条数据
select o.* FROM
(select @rownum:=@rownum+1 rownum,u.* from (SELECT @rownum:=0) r,user u ORDER BY created_on desc) o
LIMIT SELECT o.rownum FROM o where o.id = '2c9f942c51ecbe520151ed07ce80007f ',2
发现有语法错误,LIMIT语句好像不能写select

然后我又改成
select o.* FROM
(select @rownum:=@rownum+1 rownum,u.* from (SELECT @rownum:=0) r,user u ORDER BY created_on desc) o
where o.rownum >
(select o2.rownum FROM
(select @rownum:=@rownum+1 rownum,u.id from (SELECT @rownum:=0) r,user u ORDER BY created_on desc) o2 where o2.id = '2c9f942c51ecbe520151ed07ce80007f')
LIMIT 0,2;
功能好像看上去没什么问题, 但是语句写的有点丑陋, 把相同的代码写了两次,
请问各位大神有简洁并且高效的办法吗?谢谢啦!!!万分感谢!!!



...全文
267 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
致命的西瓜 2016-12-19
  • 打赏
  • 举报
回复
引用 2 楼 sjx10010 的回复:
[quote=引用 1 楼 wangjian0228 的回复:] 既然都存了id = '2c9f942c51ecbe520151ed07ce80007f'作为分页的起点了,那就不用再自增ID了,取到对应ID的时间来判断分页就好了
但是数据库保存的时间是到秒, 如果相同秒有多条生成, 取时间往后的会有一些数据被过滤掉了[/quote],加上ID,排序也加上ID
sjx10010 2016-12-19
  • 打赏
  • 举报
回复
引用 1 楼 wangjian0228 的回复:
既然都存了id = '2c9f942c51ecbe520151ed07ce80007f'作为分页的起点了,那就不用再自增ID了,取到对应ID的时间来判断分页就好了
但是数据库保存的时间是到秒, 如果相同秒有多条生成, 取时间往后的会有一些数据被过滤掉了
致命的西瓜 2016-12-19
  • 打赏
  • 举报
回复
既然都存了id = '2c9f942c51ecbe520151ed07ce80007f'作为分页的起点了,那就不用再自增ID了,取到对应ID的时间来判断分页就好了

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧