V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
66beta
V2EX  ›  问与答

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

  •  
  •   66beta · 2014-07-11 18:46:14 +08:00 · 2790 次点击
    这是一个创建于 3822 天前的主题,其中的信息可能已经有所发展或是发生改变。
    假设每页3条记录:
    id
    ---------------------------
    10
    9
    7
    6
    4<-----当前为它
    2
    1

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

    最愚蠢的办法就是一批批去对比 XD
    7 条回复    2014-07-12 13:16:26 +08:00
    66beta
        1
    66beta  
    OP
       2014-07-11 18:53:43 +08:00
    换个方式问,就是MySQL如何查询当前记录是第几条?
    em70
        2
    em70  
       2014-07-11 19:06:02 +08:00 via Android   ❤️ 1
    每一条记录写入的时候带上时间戳字段,查询的时候用两个SQL,第一个查询目标id的时间戳t,第二个统计小于时间戳t的记录数量
    66beta
        3
    66beta  
    OP
       2014-07-11 19:34:29 +08:00
    @em70 我擦,是我短路了
    由于是ID降序,查一下比当前ID大的记录数即可,余一下每页数,就能得到第几页~
    casparchen
        4
    casparchen  
       2014-07-11 19:40:23 +08:00   ❤️ 1
    # 如果ID是有序的, (可以不连续)
    COUNT(*) WHERE id > 4
    # 如果无序, 估计只能像这样
    http://stackoverflow.com/questions/12992714/php-mysql-query-for-row-index-not-id-in-a-table
    jsonline
        5
    jsonline  
       2014-07-11 19:41:12 +08:00   ❤️ 1
    @66beta 记录被删除了怎么办
    10000000000000000
    1000000000000000
    100000000000000
    10000000000000
    4 <- 第几页?
    jsonline
        6
    jsonline  
       2014-07-11 19:41:55 +08:00   ❤️ 1
    不要对 ID 做任何假设。
    rankjie
        7
    rankjie  
       2014-07-12 13:16:26 +08:00 via iPhone   ❤️ 1
    记录别真删啊,放个deleted标识位最安全了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2655 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 01:49 · PVG 09:49 · LAX 17:49 · JFK 20:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.