select * from table;
查询的数据的默认顺序是什么?插入数据的顺序?主键的顺序?…
返回的数据的顺序在没有order by的情况下,完全依赖于特定的情况,可能影响输出顺序的情况很多:包括数据库类型,数据库的版本,存储引擎,存储引擎的版本,是否查询时有对数据的修改,数据是否转移过机器,数据的索引状态…
SQL里,数据本身没有内在的顺序,如果没有order by
,数据的顺序是未知的,不稳定的,没有所谓的“默认排序”。
即使在某些情况下,可观察到在没有order by
的情况下,数据输出的顺序是按照特定的规则排过序的,比如按照插入顺序输出,这也只能当做一个巧合,可能很不稳定,如果需要输出的数据有强制,稳定的排序,必须使用order by
。