同一条SQL排序执行结果顺序为什么会变?主键为GUID,按其中一个属性A(datetime) 排序(但A刚好都相同),如select * from tb order by A ASC
但出来的结果顺序会变,有时某些数据会排在最后,有时又会排在中间,反复无常无规律。现在我要的顺序是优先按A排序,然后按数据库逻辑存储顺序排序(也就是select * 不排序时的顺序)。但不想更改表结构。PS:没有其他外界或服务干扰。

解决方案 »

  1.   

    order by A desc(asc),getdate()???
      

  2.   

    select * from tb order by A ASC,GUID 
      

  3.   

    .. order by A desc, GUID
      

  4.   

    没有唯一的东西来指定排序。SQL不保证每次出来的结果顺序一致微软已经说明了
      

  5.   

    不行的,GUID即是NEWID(),36位无序字符,如果按GUID排序则永远都不会是我要的顺序了。
      

  6.   

    目前测试了一种方法可行,测试30次不会发生顺序变化,且符合A排序和系统存储顺序排序。
    解决语句如下:
    ORDER BY A ASC,ROW_NUMBER() OVER (ORDER BY (SELECT 1))
      

  7.   

    SQL Server 的版本?若是版本2005以上的,有row_number()用?