似乎
SELECT不能保证a以任何特定顺序返回行(
ORDER BY当然,不使用子句)。
根据SQL-92标准(第373页):
如果未指定
,则 指定的表为T,并且T中的行顺序与实现有关。
好的,MySQL并不完全符合SQL-92,但这是一个严重的提示。
Laurynas
Biveinis(显然隶属于Percona)还指出:
ORDER BY由于月相的原因,没有子句(…)的行的顺序可能会有所不同,这是可以的。
在MySQL手册说,大约InnoDB的:
如果存在,InnoDB总是根据 _[a
PRIMARY KEY或NOT NULL UNIQUE索引]_对表行进行排序。
就我而言,我 认为 MySQL也可以
OPTIMIZETABLE在多次删除和插入后重新排序行,甚至重用空白空间(我试图找到一个示例,但到目前为止还是失败了)。
鉴于您的表结构,不幸的是底线如此之多,以至于许多因素可能改变了行的顺序。我找不到可靠地确定它们插入顺序的解决方案。当然,除非自创建表以来保留所有二进制日志,否则;)
但是,您可能仍想
sequence在表中添加一列。现有行将被分配可能不正确的序列号,但是至少将来的行将被正确排序。
ALTER TABLE maxID ADD sequence INT DEFAULT NULL;ALTER TABLE maxID ADD INDEX(sequence);ALTER TABLE maxID MODIFY sequence INT AUTO_INCREMENT;
http://sqlfiddle.com/#!2/63a8d/1



