首页 > 解决方案 > Mysql 在中间插入而不是在表的末尾

问题描述

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

在此处输入图像描述

如上图所示,通过查询从 2019-08-18(红色矩形)中删除行: DELETE FROM mytable WHERE date > '2019-08-18'

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

我究竟做错了什么?

标签: mysql

解决方案


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

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

添加一个ORDER BY子句以获得可预测的订单。否则要为意外做好准备。


推荐阅读