我有一个表,其自然顺序是由其主键id
决定的,所以当我这样做时
SELECT * from table
我的结果按id
排序,升序。但是,时不时地,我会在没有 ORDER BY
子句的情况下对表运行查询,并且结果按 id
降序<的顺序返回/强>。为什么会发生这种情况?什么会导致这种情况,或者我缺少有关 SQL 如何工作的哪些信息?当不使用 ORDER BY
子句时,什么决定结果的排序顺序?也没有发生JOIN
或GROUP BY
。
该表的维护方式使得任何结果的所需顺序均按id
顺序升序,因此耗时ORDER BY
永远不需要运行。
感谢您的阅读!
最佳答案
如果没有排序依据,则结果的排序未定义。它以一种对于您的数据库系统而言最佳的方式返回,以一种不可预测的方式。因此,您的id将以降序传递纯属巧合。可以通过重建索引或在表中插入/删除数据来更改顺序。
关于mysql - 当未提供 ORDER BY 子句时,SQL 会反转某些查询的排序顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21608783/