我无法让我的数据库保持井井有条我希望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 |
+----+------------+----------+---------+----------------+-----------+------------+-----------+---------+
答案 0 :(得分:2)
请注意,如果ORDER BY
查询中没有SELECT
子句,则订单实际上不具有确定性,您不能也不应该依赖于任何特定顺序。
我在此处看到Test2
插入了id=4
,假设您首先插入了Test1
行,那么您的auto_increment
正在按预期工作。
如果您只是执行SELECT * FROM thistable
之类的操作,请不要指望按id ASC
排序。添加ORDER BY
子句以明确它。
SELECT * FROM thistable ORDER BY id ASC
由于这两个新行之间的所有其他列具有相等的值,因此MySQL选择在没有显式ORDER BY
的情况下进行排序的列没有任何可区分的内容。