给出一个
表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
或未定义的行为?
答案 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)
最终结果不是任何可以预期结果的定义或提供的顺序。