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

由于OCD而陷入困境的新手尝试自动重新排序SQL数据库,sql,codeigniter,sorting,heidisql,Sql,Codeigniter,Sorting,Heidisql,对不起,我对SQL很陌生。我几个小时前才学会的。我正在使用MariaDB+InnoDB引擎和HeidiSQL软件+CodeIgniter 3。假设我有一个名为的表,其中包含以下数据: ------------------- | sort_id | name | ------------------- | 1 | Peter | | 4 | John | | 3 | David | | 5 | Petrus | |

对不起,我对SQL很陌生。我几个小时前才学会的。我正在使用MariaDB+InnoDB引擎和HeidiSQL软件+CodeIgniter 3。假设我有一个名为
的表,其中包含以下数据:

 -------------------
| sort_id | name    |
 -------------------
|       1 | Peter   |
|       4 | John    |
|       3 | David   |
|       5 | Petrus  |
|       2 | Matthew |
 -------------------
我完全知道,如果我喜欢自定义排序,最好有一个名为
sort\u id
的列,以便能够使用
ORDER BY
获取数据。但是如果我删除第3行,新表将如下所示:

 -------------------
| sort_id | name    |
 -------------------
|       1 | Peter   |
|       4 | John    |
|       5 | Petrus  |
|       2 | Matthew |
 -------------------
问题是我患有强迫症(假设有1000行),看到
sort\u id
下的一些缺失的数字(在本例中是数字3-见上表)让我的眼睛很痛。我认为这与“关系数据库”有关。是否有一种方法可以快速自动地“重新分配/重置”新的
排序id
到给定的行,并根据
名称对它们进行排序
ASC顺序
,而无需手动执行

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

我在读了林恩·克拉普林的答案后发现了这一点

她让我意识到我需要一个主键,以便更好地管理我的行,这正是我所寻找的。InnoDB会自动创建一个主键,并在HeidiSQL接口中隐藏,除非我指定一个特定的列,例如
id
。现在,我可以通过编辑主键id来重新组织我的表行,表行将自动按照我想要的方式进行排序。在此之前,我编辑了
排序id
,但是数据没有相应地更新,因为它不是主键

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

谢谢。

排序id是主键吗?如果是这样的话,这是一个非常糟糕的主意。我在MySQL中读到了这一点,InnoDB存储引擎总是在您没有明确指定主键的情况下创建主键,从而生成一个您无权访问的额外列。嘿,我发现了这一点。我在一个名为
id
的新列上创建了主键,现在我可以管理我的OCD问题了。谢谢你的提醒!