如何从表中排序值,从插入的时间开始升序。对于这个问题没有特殊的列,比如时间戳或自动增量。
我知道不建议这样做......我仍然想知道如何做到这一点。
正如我从答案中了解到的那样,如果在插入值之前没有添加排序列,例如:时间戳或自动增量,则无法通过插入对它们进行排序。
如何从表中排序值,从插入的时间开始升序。对于这个问题没有特殊的列,比如时间戳或自动增量。
我知道不建议这样做......我仍然想知道如何做到这一点。
正如我从答案中了解到的那样,如果在插入值之前没有添加排序列,例如:时间戳或自动增量,则无法通过插入对它们进行排序。
ORDER BY
如果查询中没有子句,则无法保证行将以任何特定顺序返回。
考虑一个返回表中所有行的所有列的简单查询。例如:
SELECT * FROM mytable ;
对于该查询,MySQL 很可能会从表的开头执行全表扫描。因此,这些行很可能会按照它们在物理存储中的顺序返回。
这可能大致对应于插入行的顺序,如果没有删除、没有更新和没有重组,则插入行的空间后来被回收,并重新用于存储新插入的行。
但不能保证这种行为。
要按照插入的顺序返回行,查询必须通过包含一个ORDER BY
子句来指定要返回的行的顺序。
对于以“插入顺序”返回的行,这意味着查询需要能够获得该信息,或者能够派生该信息。对于针对单个表的简单查询,这意味着信息需要存储在行中。
你可以ORDER BY
从你的桌子上得到一些东西。如果你没有任何东西可以用来找出你需要的订单,你不能通过它来订购。
根据表中的数据,您可以按数据的 id 排序 - 如果数据具有单个增量整数以确保 PK 唯一性。除非数据被捕获并记录在表中,否则没有其他方法可以按插入顺序排序。
我不知道 MySQL 中有什么东西会保留您未在表级别指定的记录的额外(元)信息。
需要有一列来对您的查询进行排序。通常这将是一个插入时间戳,或递增 id/递增键。否则无法保证订单,因为没有记录。