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

数据库取出的数据怎么排重

  •  
  •   edison111cry · 2017-10-05 08:43:07 +08:00 · 2431 次点击
    这是一个创建于 2637 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如果有 APP 调用后台的接口列表展示,按分页获取一次取 10 条。
    然后接口里用 SQL 查询语句 limit index,10;

    第一次取时 limit 0,10;
    (此时新数据正好进来 10 条)
    第二次取时 limit 10,10;

    那么 APP 展示的第二次的列表数据岂不是一样的?

    这种数据去重的话一般都是怎么来处理?
    6 条回复    2017-10-05 19:49:29 +08:00
    phpcxy
        1
    phpcxy  
       2017-10-05 09:01:49 +08:00 via Android
    接口加个调用时间参数,查询加多个条件小于该时间
    edison111cry
        2
    edison111cry  
    OP
       2017-10-05 09:12:45 +08:00
    @phpcxy 你的意思是指,第一次调用后新加入的数据就不参于第二页以及以后页的展示了是吧?
    codingadog
        3
    codingadog  
       2017-10-05 09:36:19 +08:00 via iPhone
    按 id 排序?
    acr0ss
        4
    acr0ss  
       2017-10-05 12:19:00 +08:00   ❤️ 1
    这个问题,得看你的数据库是怎么设计的。

    1.如果有自增的 id 主键
    每次查询把最后一个 id 带上。
    where id > ${last_id} limit 10

    2.如果没有自增 id ;且按照时间字段倒序。按照 1 楼所属
    where modify_time < ${last_modify_time} limit 10
    mooncakejs
        5
    mooncakejs  
       2017-10-05 15:37:39 +08:00 via iPhone
    时间不太靠谱,还是得靠 id,根据 row number 排序。
    IceBay
        6
    IceBay  
       2017-10-05 19:49:29 +08:00
    或者带上已推送的 ID ?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5877 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 02:19 · PVG 10:19 · LAX 18:19 · JFK 21:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.