当没有提供ORDER BY子句时,SQL正在反转某些查询的排序顺序

时间:2014-02-06 16:41:02

标签: mysql sql sorting sql-order-by

我有一个表,其自然顺序是主键id,所以当我这样做时

SELECT * from table

我的结果按id升序排序。但是,我会不时地在表上运行查询,而没有ORDER BY子句,结果将按id 降序的顺序返回。为什么会这样?是什么导致这个,或者我错过了关于SQL如何工作的哪些信息?当没有使用ORDER BY子句时,什么会决定结果的排序顺序?也没有JOINGROUP BY发生。

该表的维护方式使得任何结果的所需顺序为id顺序升序,因此永远不必运行耗时ORDER BY

感谢阅读!

1 个答案:

答案 0 :(得分:0)

如果没有订单,则不会定义结果的排序。它以一种不可预测的方式以最佳方式返回给您的数据库系统。因此,您的 ID 将以降序递送,这纯属巧合。可以通过重建索引或在表中插入/删除数据来更改排序。