请教个简单的算法,如何快速判断当前记录在哪一个分页?

2014-07-11 18:46:14 +08:00
 66beta
假设每页3条记录:
id
---------------------------
10
9
7
6
4<-----当前为它
2
1

第一页:10,9,7
第二页:6,4,2
第三页:1
(8,5,3条被删了)
我如何快速知道请求的id在第几页?

最愚蠢的办法就是一批批去对比 XD
2788 次点击
所在节点    问与答
7 条回复
66beta
2014-07-11 18:53:43 +08:00
换个方式问,就是MySQL如何查询当前记录是第几条?
em70
2014-07-11 19:06:02 +08:00
每一条记录写入的时候带上时间戳字段,查询的时候用两个SQL,第一个查询目标id的时间戳t,第二个统计小于时间戳t的记录数量
66beta
2014-07-11 19:34:29 +08:00
@em70 我擦,是我短路了
由于是ID降序,查一下比当前ID大的记录数即可,余一下每页数,就能得到第几页~
casparchen
2014-07-11 19:40:23 +08:00
# 如果ID是有序的, (可以不连续)
COUNT(*) WHERE id > 4
# 如果无序, 估计只能像这样
http://stackoverflow.com/questions/12992714/php-mysql-query-for-row-index-not-id-in-a-table
jsonline
2014-07-11 19:41:12 +08:00
@66beta 记录被删除了怎么办
10000000000000000
1000000000000000
100000000000000
10000000000000
4 <- 第几页?
jsonline
2014-07-11 19:41:55 +08:00
不要对 ID 做任何假设。
rankjie
2014-07-12 13:16:26 +08:00
记录别真删啊,放个deleted标识位最安全了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/122197

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX