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 |
+----+------------+----------+---------+----------------+-----------+------------+-----------+---------+
4

1 に答える 1

3

ORDER BYクエリに句SELECTがないと、順序は事実上決定論的ではなく、特定の順序であることに依存することはできず、またそうすべきではないことを 忘れないでください。

ここに表示されているのは、でTest2挿入されておりid=4、最初にTest1行を挿入したとするauto_incrementと、期待どおりに機能しています。

単にのようなことをした場合SELECT * FROM thistableは、行が。で並べ替えられることを期待しないでくださいid ASCORDER BYそれについて明示する句を追加します。

SELECT * FROM thistable ORDER BY id ASC

これら2つの新しい行の間の他のすべての列は等しい値を持っているため、明示的なものがない場合にMySQLがソートするために選択した列にはORDER BY、区別するものがありません。

于 2013-01-13T19:24:47.330 に答える