MySQL ID PRIMARY KEY AUTO_INCREMENT不保持顺序

4

我在数据库方面遇到了问题,希望ID字段保持按数字顺序排列。该字段设置为INT PRIMARY KEY AUTO_INCREMENT。当我删除数据库中的所有条目时,问题就来了。在删除条目之前,一切都按预期顺序进行,但在删除后,它将始终按降序排列,而不是从较小的整数开始按数字顺序排列。有人能解释一下这是什么原因吗?

+----+------------+----------+---------+----------------+-----------+------------+-----------+---------+
| id | employeeID | date     | timeIn  | jobDescription | equipType | unitNumber | unitHours | timeOut |
+----+------------+----------+---------+----------------+-----------+------------+-----------+---------+
|  1 |          2 | 01/13/13 | 1:19 pm | Test1          | Dozer     | 1D         |        98 | 1:20 pm |
|  2 |          2 | 01/13/13 | 1:20 pm | Test2          | Dozer     | 1D         |        98 | 1:20 pm |
+----+------------+----------+---------+----------------+-----------+------------+-----------+---------+

删除所有行后:

+----+------------+----------+---------+----------------+-----------+------------+-----------+---------+
| id | employeeID | date     | timeIn  | jobDescription | equipType | unitNumber | unitHours | timeOut |
+----+------------+----------+---------+----------------+-----------+------------+-----------+---------+
|  4 |          2 | 01/13/13 | 1:22 pm | Test2          | Dozer     | 1D         |        98 | 1:22 pm |
|  3 |          2 | 01/13/13 | 1:22 pm | Test1          | Dozer     | 1D         |        98 | 1:22 pm |
+----+------------+----------+---------+----------------+-----------+------------+-----------+---------+
1个回答

3
请记住,如果在您的SELECT查询中没有ORDER BY子句,则顺序实际上是不确定的,您不能也不应该依赖于其以任何特定顺序排列。
我看到的是用id = 4插入了Test2,并且假设您首先插入了Test1行,则您的自动递增正在按预期工作。
如果您只是简单地执行类似于SELECT * FROM thistable这样的操作,请不要期望行按id ASC排序。添加ORDER BY子句以明确指定顺序。
SELECT * FROM thistable ORDER BY id ASC

由于这两行之间的所有其他列都具有相等的值,因此如果MySQL在没有显式指定ORDER BY的情况下选择排序的列,则没有任何区别。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接