由于强迫症而陷入困境的新手尝试自动重新排序 SQL 数据库

Newbie in dilemma due to OCD tries to reorder SQL database automatically

抱歉,我是 SQL 的新手。我几个小时前才学会的。我正在使用 MariaDB + InnoDB Engine 和 HeidiSQL 软件 + CodeIgniter 3。假设我有一个名为 disciples 的 table,其中包含以下数据:

 -------------------
| sort_id | name    |
 -------------------
|       1 | Peter   |
|       4 | John    |
|       3 | David   |
|       5 | Petrus  |
|       2 | Matthew |
 -------------------

我完全意识到,如果我更喜欢自定义排序,最好有一个名为 sort_id 的列,以便能够使用 ORDER BY 获取数据。但如果我删除 row 3,新的 table 将如下所示:

 -------------------
| sort_id | name    |
 -------------------
|       1 | Peter   |
|       4 | John    |
|       5 | Petrus  |
|       2 | Matthew |
 -------------------

问题是我有强迫症(假设有 1000 行),看到这个乱七八糟的数字(在本例中为 3 - 见上文 table) sort_id。我认为这与"relational database"有关。有没有一种方法可以快速自动地 "re-assign/reset" 新 sort_id 数字到给定行并根据 name 使用 SQL 对它们进行 ASC order 排序code 而无需手动完成?

 -------------------
| sort_id | name    |
 -------------------
|       1 | John    |
|       2 | Matthew |
|       3 | Peter   |
|       4 | Petrus  |
 -------------------

我在阅读 Lynn Crumbling 的回答后明白了这一点。

她让我意识到我需要一个主键才能更好地管理我的行,这正是我一直在寻找的。碰巧 InnoDB 会自动创建一个主键并且在 HeidiSQL 界面中是隐藏的,除非我指定一个特定的列,例如 id。现在,我可以通过编辑主键 ID re-organize 我的 table 行,table 行将自动按照我想要的方式自行排序。在此之前,我编辑了 sort_id 但数据没有相应更新,因为它不是主键。

 ------------------------
| id | sort_id | name    |
 ------------------------
|  1 |       1 | Peter   |
|  2 |       4 | John    |
|  3 |       5 | Petrus  |
|  4 |       2 | Matthew |
 ------------------------

谢谢。