MySQL,ORDER BY插入顺序,没有排序列

时间:2012-07-25 18:44:05

标签: mysql

如何从表中插入值,从插入时开始递增。这个问题没有专门的栏目,比如时间戳或自动增量。

我知道不建议这样做......我仍然想知道如何做到这一点。

正如我从答案中所理解的,如果在插入值之前没有添加排序列,例如:timestamp或autoincremental,则无法通过插入对它们进行排序。

4 个答案:

答案 0 :(得分:9)

如果查询中没有ORDER BY子句,则无法保证以任何特定顺序返回行。

对于返回表中所有行的所有列的简单查询...例如

SELECT * FROM mytable ; 

对于这样的查询,MySQL可能会从表的开头执行全表扫描,因此可能会按照在物理存储中找到的顺序返回行。

这可能大致对应于插入行的顺序,如果没有删除,没有更新和重组,其中插入行的空间稍后被回收,并重新用于存储新插入的行。

但是,这种行为无法保证。要按插入顺序返回行,您确实需要将该信息(即插入行的顺序)存储在行的列中。

答案 1 :(得分:1)

你可以ORDER BY从桌子上拿出来的东西。如果您没有任何可用于查找所需订单的内容,则无法通过它订购。

答案 2 :(得分:1)

根据表中的数据,您可以按数据的id排序 - 如果数据具有单个增量整数以确保PK唯一性。除非数据被捕获并记录在表中,否则没有其他方法可以对插入顺序进行排序。

我不知道MySQL中有哪些内容保留了您未在表级别指定的记录的额外(元)信息。

答案 3 :(得分:0)

需要有一列来订购您的查询。通常这将是插入时间戳,或递增id /递增键。否则无法保证订单,因为没有记录。

relevant thread from MySQL forum