插入时停止MySql自动排序

插入时停止MySql自动排序,mysql,sorting,insert,Mysql,Sorting,Insert,MySQL中“insert”语句的默认语法为: INSERT INTO table_name VALUES (value1, value2, value3,...); 我所知道的是,这个命令在表中最后一行之后插入一个新行。但我不知道为什么它会自动排序并根据顺序插入新行 我使用的命令是: INSERT INTO survey_questions VALUES ("Q6fiMg","Testing1","textbox","","true"); 我的表格结构:- 执行查询并输出:- 它不是在

MySQL中“insert”语句的默认语法为:

INSERT INTO table_name VALUES (value1, value2, value3,...);
我所知道的是,这个命令在表中最后一行之后插入一个新行。但我不知道为什么它会自动排序并根据顺序插入新行

我使用的命令是:

INSERT INTO survey_questions VALUES ("Q6fiMg","Testing1","textbox","","true");
我的表格结构:-

执行查询并输出:-


它不是在最后插入新行。它在idQ4kB3i的行之后插入。我的问题id列只是一个主键。我无法对列进行任何排序。有人能解释一下为什么会发生这种情况,以及我如何阻止这种情况吗?

您没有为select指定排序顺序,因此无法确定检索记录的顺序

如果不按ColName[ASC/DESC]指定排序顺序,则返回记录的顺序不存在任何变量

影响这一点的因素很多,包括数据库引擎、版本号、索引、数据分页、检索算法等


因此,简而言之,如果您希望按指定的顺序检索数据,请指定一个

主键是索引,默认情况下索引按ASC排序。在SQL中,没有明确指定order by,就没有第一行或最后一行。Insert语句对最后一行的含义一无所知。如果您需要按插入行的顺序显示行,您必须有一个自动增量列,这对于问题id是一个更好的选择,顺便说一句,特别是如果您使用InnoDB或datetime/timestamp列,或者两者都使用。然后在select语句中显式使用ORDERBY。那么解决方案是什么呢?我应该增加一个新的专栏来安排我的问题吗?那么解决办法是什么呢?仔细看看我评论中的答案。答案已经给出了。在阅读你的评论之前,我已经发表了评论。实际上是为了@sebas。非常感谢。我就是这么想的。当我没有为select指定排序顺序时。它将检索表中的记录,而不排列任何行。因此,最后插入的行应显示为最后一行,但不是。这意味着插入是通过排序完成的,我猜。没有排序依据,没有GAURANTEED排序顺序。我希望按插入的顺序排序,而不是按升序或降序排序,因为我的问题id是一个随机字符串生成器。因此,对它们进行排序会使它们变得混乱。然后使用列