同一条select sql语句在两个MariaDB上执行结果不一样.SELECT tmp_page.* FROM (
  SELECT t.* FROM device_info t ORDER BY t.ID DESC 
) tmp_page  LIMIT 0,10;A数据库查询出来是按照ID倒序排列的
B数据库查询出来时按照ID正序排列的这个是为什么。和数据库引擎有关系吗?

解决方案 »

  1.   

    does t.ID have the same definition in both mariadb?
      

  2.   

    这个和存储引擎没有关系,order by t.id desc,然后在取 tmp_page  LIMIT 0,10
    和order by t.id asc,然后再去tmp_page LIMIT 0,10一定取出结果集是不一样的。
      

  3.   


    yes ,have the same definition in both mariadb!
      

  4.   


    这个肯定啊,语句都是一样的,两个数据库配置都一致,就是跑出来的结果不一样,
    如果去掉外层的包裹 ,直接SELECT t.* FROM device_info t ORDER BY t.ID DESC  limit 0,10 ,结果都是一样的。
      

  5.   


    oracle排序,再分页不都是这么做的吗?
    而且有的mariadb上是好的,有的不行,
    从mysql迁移到mariadb上就出现这个问题了。
      

  6.   

    SELECT tmp_page.* FROM (
      SELECT t.* FROM device_info t ORDER BY t.ID DESC 
    ) tmp_page order by xxx  LIMIT 0,10;
    没有ORDER BY语句则由数据库系统自行决定。这个并不是完全相同的。