mysql - 当未提供 ORDER BY 子句时,SQL 会反转某些查询的排序顺序

标签 mysql sql sorting sql-order-by

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

SELECT * from table

我的结果按id排序,升序。但是,时不时地,我会在没有 ORDER BY 子句的情况下对表运行查询,并且结果按 id 降序<的顺序返回/强>。为什么会发生这种情况?什么会导致这种情况,或者我缺少有关 SQL 如何工作的哪些信息?当不使用 ORDER BY 子句时,什么决定结果的排序顺序?也没有发生JOINGROUP BY

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

感谢您的阅读!

最佳答案

如果没有排序依据,则结果的排序未定义。它以一种对于您的数据库系统而言最佳的方式返回,以一种不可预测的方式。因此,您的id将以降序传递纯属巧合。可以通过重建索引或在表中插入/删除数据来更改顺序。

关于mysql - 当未提供 ORDER BY 子句时,SQL 会反转某些查询的排序顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21608783/

相关文章:

mysql - MySql 中 ISNULL 函数中的两列

mysql - Yii2 使用循环打印列名及其值

javascript - 如何正确排序整数数组

mysql - MySQL中任何字段更新时调用HTTP请求的方法

php - 使用提交按钮通过 PHP 将条目插入 MySQL 数据库?

sql - 如何查询两个不同表中两列的最大值?

perl - 如果在 sort() 期间使用了不存在的模块,则脚本将终止 - DateTime::TimeZone::Locale 示例

具有用户定义的 cmp 函数的 python 排序函数

sql - 查找时间戳之间的间隙

mysql - $query 返回结果但不是我想要的结果 - 有计数吗?