由于OCD而陷入困境的新手尝试自动重新排序SQL数据库
对不起,我对SQL很陌生。我几个小时前才学会的。我正在使用MariaDB+InnoDB引擎和HeidiSQL软件+CodeIgniter 3。假设我有一个名为由于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 | |
的表,其中包含以下数据:
-------------------
| 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问题了。谢谢你的提醒!