V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
flyme6
V2EX  ›  程序员

mysql 查询条件降序,数据重复问题

  •  
  •   flyme6 · 2019-08-17 04:23:57 +08:00 · 3207 次点击
    这是一个创建于 1932 天前的主题,其中的信息可能已经有所发展或是发生改变。

    根据时间进行降序查询,(其中时间都是一样的),这时候分页,会出现数据重复,其中表中数据肯定是不重复的。

    17 条回复    2019-08-19 19:07:53 +08:00
    zcmxw1
        1
    zcmxw1  
       2019-08-17 05:54:33 +08:00 via Android
    sql 语句问题吧?
    wangsongyan
        2
    wangsongyan  
       2019-08-17 07:02:32 +08:00 via iPhone
    limit,offset 没算对?
    yidinghe
        3
    yidinghe  
       2019-08-17 07:23:18 +08:00 via Android
    跟排序没关系,查询本身的问题
    PHPJit
        4
    PHPJit  
       2019-08-17 08:22:13 +08:00 via Android   ❤️ 1
    当你点击下一页的时候,这个时候有新数据进来了。
    twocold0451
        5
    twocold0451  
       2019-08-17 08:33:27 +08:00 via Android
    再加个其他排序条件,Oracle 遇到过这个问题
    xuanbg
        6
    xuanbg  
       2019-08-17 08:38:47 +08:00
    4 楼正解,需要额外的条件才能避免这个问题
    ilovetm
        7
    ilovetm  
       2019-08-17 08:43:25 +08:00 via iPhone   ❤️ 1
    order by 应该使用多个字段,确认唯一性
    dgjungle
        8
    dgjungle  
       2019-08-17 08:44:59 +08:00
    group by 也可以保证唯一性呀
    lxy42
        9
    lxy42  
       2019-08-17 11:00:26 +08:00 via Android
    当排序字段有重复值时,顺序是不确定的。
    cyssxt
        10
    cyssxt  
       2019-08-17 11:13:27 +08:00 via iPhone
    这个肯定是 sql 的问题,查一下关联表 join 之类的逻辑
    xujif
        11
    xujif  
       2019-08-17 12:13:52 +08:00 via iPhone
    信息流应用很少用传统的 page 分页,用递增 id 排序。
    hhyvs111
        12
    hhyvs111  
       2019-08-17 13:49:43 +08:00
    可能这个时候被删了一些数据,然后分页计算失误
    pussy2019
        13
    pussy2019  
       2019-08-17 13:57:11 +08:00   ❤️ 1
    ORDER BY `created_at` ASC,`id` ASC
    reus
        14
    reus  
       2019-08-17 13:59:18 +08:00   ❤️ 1
    既然时间一样,那对时间排序,就等于没有排序,顺序就可以认为是随机的,分页当然不能正确了

    应该有一个兜底的排序字段,一般都是用唯一字段,例如自增 id
    mmdsun
        15
    mmdsun  
       2019-08-17 14:50:31 +08:00 via Android
    MySQL oder by 与 limit 合用会出现这个问题。
    waytodelay
        16
    waytodelay  
       2019-08-17 17:06:50 +08:00 via Android
    mysql 遇到和你一模一样的问题,排序字段只有时间而且时间有超过分页参数的重复,分页就出问题了,这时加个 id 排序就不会出问题了
    flyme6
        17
    flyme6  
    OP
       2019-08-19 19:07:53 +08:00
    @reus 有道理,多谢多谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2927 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 02:48 · PVG 10:48 · LAX 18:48 · JFK 21:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.