zhongpingjing
0D
V2EX  ›  数据库

求解,同样的数据,同样的 sql,在不同实例执行结果就不一样

  •  
  •   zhongpingjing · Mar 13, 2024 · 2433 views
  •   You need to sign in to view this topic
    This topic created in 933 days ago, the information mentioned may be changed or developed.

    一个实例是 aws 上的 RDS ,一个是本地,都是下面这条 sql

    select
    	no,
    	date,
    	sum(amount) as amount
    from
    	t
    group by
    	no,
    	date
    order by
    	date desc
    LIMIT 10,10
    

    结果查出来的数据不一致,有什么原因造成的吗。主要是 rds 查出来分页结果还是错的,有数据同时在LIMIT 0,10 和LIMIT 10,10 都出现了。本地 mysql 查询确没有这种情况

    8 replies  •  2024-03-13 16:14:32 +08:00
    zhongpingjing
        1
    zhongpingjing  
    OP
       Mar 13, 2024
    然后比较神奇的是,数据只有刚好 20 条时就会不一致,23 条时 rds 查询结果又是正确的
    zjp
        2
    zjp  
       Mar 13, 2024 via Android
    按 date 排序 第 10 和 11 是相同的 date ,有唯一键的话,加上作为排序键
    kcccc
        3
    kcccc  
       Mar 13, 2024   ❤️ 2
    请看官方文档中的描述
    https://dev.mysql.com/doc/refman/5.7/en/limit-optimization.html

    如果多行在列中具有相同的值 ORDER BY ,则服务器可以自由地以任何顺序返回这些行,并且可以根据整体执行计划以不同的方式返回这些行。

    你的数据中 date 有相同的值,而你只按 date 来排序。
    zhongpingjing
        4
    zhongpingjing  
    OP
       Mar 13, 2024
    @kcccc 确实是,感谢
    xwg999
        5
    xwg999  
       Mar 13, 2024
    db 99%不会错
    sampeng
        6
    sampeng  
       Mar 13, 2024
    一边进来一边想不会是有 group 和 order by 吧?。。一看果然是。。
    siweipancc
        7
    siweipancc  
       Mar 13, 2024 via iPhone
    一般最后要加上 id 。不然会被提 bug
    wuhao1
        8
    wuhao1  
       Mar 13, 2024
    https://wuhao.pw/archives/178/
    当 group by 遇上 order by 后总感觉语句是对的,然而结果却
    和你的有异曲同工之效
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3185 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 00:16 · PVG 08:16 · LAX 17:16 · JFK 20:16
    ♥ Do have faith in what you're doing.