mysql - Mysql 在中间插入而不是在表的末尾
问题描述
我是数据库新手。我从数据库表中删除了几行(直到表末尾)。现在每次我通过 php 执行 INSERT 查询时,它都会在最后一个删除的行之后立即插入新行,并将先前的插入向下推一行。
如上图所示,通过查询从 2019-08-18(红色矩形)中删除行:
DELETE FROM mytable WHERE date > '2019-08-18'
现在新插入的顺序错误,如上图绿色矩形所示。虽然日期为 2019-08-19 的行首先插入,但它被推到表的末尾。
我究竟做错了什么?
解决方案
大多数关系数据库不会以任何特定顺序返回行,除非您明确要求。他们只会做最简单的事情。通常是插入顺序,或者磁盘上的顺序,或者最后使用的任何索引。这确实是任意的,甚至可能在同一数据库平台的版本之间发生变化。
“如果你关心你会问”是这里的工作原则。你没有问,所以 MySQL 假设你不在乎。
添加一个ORDER BY
子句以获得可预测的订单。否则要为意外做好准备。
推荐阅读
- python - 在一张图中绘制多条线,x 轴上以月为单位,y 轴上出现次数
- angular - 为什么我的 html 文件找不到 UpdateSites 方法(Uncaught ReferenceError: UpdateSites is not defined)?
- mysql - 如何在 Mysql 中使用 Controller 在前端显示数据
- r - ggplot中的轴转换-如何更改特定间隔的比例?
- python - 如何在 pytorch 中加载预训练的 googlenet 模型
- c++ - 使用前向声明的类重定义问题
- c# - 如何在测试方法中模拟按键?
- tensorflow - 我可以在只使用 keras 的环境中使用 tf.session() 吗?
- c# - 为什么在用户控件中的一组指令后 RegisterClientScriptBlock 不起作用
- excel - 如何在Excel中找到每20行中的高低值