Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL在中间插入,而不是在表的末尾插入_Mysql - Fatal编程技术网

MySQL在中间插入,而不是在表的末尾插入

MySQL在中间插入,而不是在表的末尾插入,mysql,Mysql,我不熟悉数据库。我从数据库表中删除了几行(直到表的末尾)。现在,每次我通过php执行INSERT查询时,它都会在最后一行删除后立即插入新行,并将之前的插入向下推一行 如上图所示,通过查询将2019-08-18(红色矩形)中的行删除: 从mytable中删除,其中日期为“2019-08-18” 现在,新插入项的顺序错误,如上图中绿色矩形所示。虽然日期为2019-08-19的行是先插入的,但它会被推到表的末尾 我做错了什么?除非您明确要求,否则大多数关系数据库不会以任何特定顺序返回行。他们只会做最

我不熟悉数据库。我从数据库表中删除了几行(直到表的末尾)。现在,每次我通过php执行INSERT查询时,它都会在最后一行删除后立即插入新行,并将之前的插入向下推一行

如上图所示,通过查询将2019-08-18(红色矩形)中的行删除:
从mytable中删除,其中日期为“2019-08-18”

现在,新插入项的顺序错误,如上图中绿色矩形所示。虽然日期为2019-08-19的行是先插入的,但它会被推到表的末尾


我做错了什么?

除非您明确要求,否则大多数关系数据库不会以任何特定顺序返回行。他们只会做最简单的事。通常这是插入顺序,或者磁盘上的顺序,或者上次使用的任何索引。它实际上是任意的,甚至可能在同一数据库平台的不同版本之间发生变化

“如果你在乎,你会问”是这里的原则。你没有问,所以MySQL假定你不在乎


添加一个
orderby
子句以获得可预测的订单。否则,请为意外情况做好准备。

按id订购。
<代码>按日期排序的订单?
id
的顺序正确(43到48)。如果您需要特定顺序的行,您应该定义顺序。不要依赖数据库按您喜欢的方式排序。在拉取、组织或查看数据时使用ORDERBY子句以您想要的方式查看数据。但我不知道是什么导致了这种行为?在删除查询之前,insert按预期工作;在删除查询之后,发生了什么???这就是数据库的工作方式“添加ORDERBY子句以获取可预测的订单”ORDERBY始终可能无法获取可预测的订单。。只有当您至少包含一列时,ORDER BY ORDER才是可预测的,该列具有主键或唯一键,从而使其完全确定(“固定”)。。在非唯一值上,顺序仍然是非确定性(“随机”)的,其中值是联系在一起的。@RaymondNijland这是一个很好的观点。在这种情况下,使用唯一的ID值是可以预测的,但在其他值上,可能存在可能会被洗牌的关系。