本帖最后由 hi_web 于 2014-04-11 11:34:58 编辑

解决方案 »

  1.   

    实事求是的讲,就现在我遇到的情况,如果distinct 不写order by 的话,实际结果集的输出顺序依赖于两个条件。 
    1、生成的查询计划的顺序(在不同版本的sql server 解释同一个语句的执行计划会有所不同,统计信息不同也会有所不同)
    2、数据存储和访问的顺序 (这个要看是否有索引等)还是需要具体情况,具体分析的。
    个人愚见,参考
      

  2.   

    没有order by子句的所有查询都不保证顺序,即使有聚集索引
      

  3.   

    因为优化器可能会选择并行处理,或者在多文件情况下不按“期待”顺序扫描数据,所以无法保证数据的顺序。唯一能确保顺序的只有order by。distinct内置是需要排序然后去重的,但是最终结果可能又会乱掉。另外根据sqlserver排序规则,不同的排序规则也有不同的结果