2013-01-13 84 views
3

我無法讓我的數據庫保持組織狀態我想設置爲INT PRIMARY KEY AUTO_INCREMENT的ID字段保持數字順序。當我刪除數據庫中的所有條目時,問題就來了。在刪除條目之前,所有的操作都是按照預期的順序進行的,在刪除之後,而不是按照數字順序進行操作,先從較小的整數開始,然後按降序排列。有人可以解釋是什麼造成了這一點。MySQL ID 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 | 
+----+------------+----------+---------+----------------+-----------+------------+-----------+---------+ 

回答

2

請記住,沒有你的SELECT查詢的ORDER BY條款,訂單是有效的不確定性,你不能,不應該依賴於它在任何特定的順序是。

我在這裏看到的是插入id=4Test2,並假設你第一次插入Test1行,那麼你的auto_increment工作正常。

如果您只是做了類似SELECT * FROM thistable的事情,不要指望按id ASC排序。添加一個ORDER BY子句以明確它。

SELECT * FROM thistable ORDER BY id ASC 

由於這兩個新行之間的所有其他列具有相等的值,取其列MySQL已經選擇排序沒有一個明確的ORDER BY沒有什麼區別。