TSQL,ORDER BY的排序

时间:2010-10-18 14:45:17

标签: sql tsql

给出一个

Name   Age
Bob    30
Paul   35
John   35

和声明

select * from table ORDER BY Age DESC

结果表的排序是什么?

Name   Age
Paul   35
John   35
Bob    30

Name   Age
John   35
Paul   35
Bob    30

或未定义的行为?

4 个答案:

答案 0 :(得分:7)

保证Bob将是结果集的最后一行。不保证其他行的相对顺序。

如果您需要保证订购,那么您需要明确它。例如:

SELECT *
FROM table
ORDER BY age DESC,
         name ASC

答案 1 :(得分:2)

ORDER BY Age DESC, Name [ASC|DESC]

如果省略ORDER BY子句,优化器将为您决定订单。根据我的经验,它通常是 ,但数据是在磁盘上订购的。如果存在聚簇索引(通常是主键),则它将是其顺序。 然而,正如@Martin指出的那样,这不能保证。如果您需要特定订单,请指定它。

答案 2 :(得分:0)

select * from table 
ORDER BY Age DESC , name asc

答案 3 :(得分:0)

最终结果不是任何可以预期结果的定义或提供的顺序。