SELECT *
FROM
(
  SELECT TOP (100)PERCENT  字段1
  FROM 表
  ORDER BY 字段1 DESC 
)AS t
然后查询出来的数据 没有按 字段1 排序了 郁闷 
以前都还没注意
请问大家怎么办

解决方案 »

  1.   

    SELECT *
    FROM
    (
      SELECT TOP (100)PERCENT  字段1
      FROM 表
      ORDER BY 字段1 DESC 
    )AS t
      ORDER BY 字段1 DESC 
      

  2.   

    SELECT *
    FROM
    (
      SELECT TOP (100)PERCENT  字段1
      FROM 表
      ORDER BY 字段1 DESC 
    )AS t
    SELECT *
    FROM
    (
      SELECT TOP 1000000000  字段1
      FROM 表
      ORDER BY 字段1 DESC 
    )AS t
      

  3.   

    SELECT *
    FROM
    (
      SELECT TOP (100)PERCENT  字段1
      FROM 表
    )AS t
      ORDER BY 字段1 DESC 
      

  4.   

    SELECT *
    FROM
    (
      SELECT TOP (100)PERCENT  字段1
      FROM 表
      ORDER BY 字段1 DESC 
    )AS t-->不如:
      SELECT 字段1
      FROM 表
      ORDER BY 字段1 DESC 
      

  5.   


    你这个order by 是不能放里面的
      

  6.   

    这写法不就等于脱了库子..为什么子查询内部加了order by而最终结果集却没有按那个选?
    未指定order by或强制索引等等, sqlserver并不保证选出的顺序一致。
    子查询已形成了中间结果集,再次查取时需要再次指定排序。
      

  7.   

    原因是这样的 --》》》》  SELECT TOP (100)PERCENT  字段1
      FROM 表
      ORDER BY 字段1 DESC 
    这个部分出来是一个派生表 也就是一个表
    表是数据集 没有逻辑性 虽然你这里查出来是排序了 但是作为一个表 它不是一个逻辑体 
    数据是杂乱的 除非你在相关字段有聚集索引总结来说:表是数据集 没有逻辑性可言(除非聚集索引)
    你可以在外面使用 order by