有没有办法重新排列mysql行

有没有办法重新排列mysql行,mysql,sql,Mysql,Sql,我创建了一个这样存储用户的表 id name family 1 mark zooker 2 mak donald 我在一个月后优化了我的代码,为了使其优化,我删除了MySql中的一些行,现在它看起来像这样 id name family 1 mark zooker 3 allin wood 我需要知道有没有办法重新排列主键id?主键是自动递增字段主键不应该改变。它们是该记录的唯一标识符。你想做的事情就像是因为一个家庭搬走而改变街上每个人的

我创建了一个这样存储用户的表

id   name   family
1    mark   zooker
2    mak    donald
我在一个月后优化了我的代码,为了使其优化,我删除了MySql中的一些行,现在它看起来像这样

id   name   family
1    mark   zooker
3    allin  wood

我需要知道有没有办法重新排列主键id?主键是自动递增字段

主键不应该改变。它们是该记录的唯一标识符。你想做的事情就像是因为一个家庭搬走而改变街上每个人的地址


如果架构正确,为一段数据跳过ID不会造成任何伤害。

如果您想保持相同的物理顺序,但重新排列ID(虽然这对我来说没有任何意义,但我想您只是在练习),则必须分两步进行:

  • 添加另一列(我们称之为new_id),它也是自动递增的
  • 更新id列以匹配新的\u id列

RDBMs不关心行的物理顺序。

为什么?序列中有一个间隙这一事实应该无关紧要。你想解决什么问题?每个用户都有自己的id,现在id为2的用户不存在了?那又怎样?没有人会因为未使用的用户ID而受到伤害。这只是一个为什么-2的问题?我认为这个网站是用来提问,以帮助像我这样的人,有同样的问题question@HiDd3N-本网站有关于如何提问的指南。即使我们忽略了“为什么?你不应该在意”这一点,这一点也属于:离题:问题必须表明对正在解决的问题的最低理解。告诉我们你试过做什么,为什么不起作用,以及它应该如何起作用。另请参见:Stack Overflow question Checklist谢谢我不知道MySQL不允许两个
auto_increment
列,而且您已经错过了更新引用主键的任何其他表的重要步骤。为了练习,我问。我们可以删除auto increment字段并添加另一个auto increment字段吗@ceejayoz?可以,但如果删除主键字段,则无法保证将以相同的顺序检索记录。这就是为什么我建议创建另一个专栏。