你是说最终结果没有排序吗
是的话,在外面套一个排序就可以了
select t.* from (select top 5 * from tb order by id desc) t order by id desc

解决方案 »

  1.   

    這樣的sql就顯得多餘了
    直接
    select top 5 * from tb order by id desc
      

  2.   

    這樣的sql就顯得多餘了
    直接
    select top 5 * from tb order by id desc
    这只是举例,实际SQL是非常复杂的,当然数据量不大,对性能要求不高,所以不需要优化SQL的,只希望子查询实现排序
      

  3.   

    這樣的sql就顯得多餘了
    直接
    select top 5 * from tb order by id desc
    这只是举例,实际SQL是非常复杂的,当然数据量不大,对性能要求不高,所以不需要优化SQL的,只希望子查询实现排序
    子查詢得到的結果作為臨時表再查找數據,最後結果還是無序的,如果要排序還是要加Order by 
      

  4.   

    你应该是用了其它影响默认排序的 关键字
    如果是的话,只能再外面套一个ORDER BY 了
      

  5.   

    你太腻害了,我用的其实是top 100 percent
    刚才试了试,只有在top 100 percent时子查询排序失效。top 20 percent都没问题,肿么破?
      

  6.   

    终于知道这是MSSQL0508的一个BUG,要安装补丁才能修复。。天!
      

  7.   

    还有这说~~
    另外,我说的能影响排序的关键字,是指GROUP BY ROW_NUMBER等不过,回想你说SQL2000有效,而2008无效,可能真的是BUG了
      

  8.   

     还能有bug ?太凶残了...
      

  9.   

    楼主既然验证了装补丁能解决问题,那必须是BUG了。
      

  10.   

    之前是有碰到这种情况,网上说是“top 100 percent”会被优化掉,没效果。后来就改成“top 100000000”,因为我们公司的数据量顶多上百万条。
      

  11.   

    后续版本top 100 percent如果在子查询,就会禁止排序,卧槽,这么麻烦,还是赶紧学MariaDB好了
      

  12.   

    如果TOP 100 PERCENT 就不要这个TOP了,这样就还会排序
      

  13.   

    這樣的sql就顯得多餘了
    直接
    select top 5 * from tb order by id desc
    我也是这样想的!
      

  14.   

    SELECT * FROM (SELECT TOP 5 * FROM sys.tables ORDER BY object_id DESC) tSQL2008 R2版本测试没问题