Php 删除少量记录后,如何在MySQL中重新排序自动增量id?

Php 删除少量记录后,如何在MySQL中重新排序自动增量id?,php,mysql,ajax,Php,Mysql,Ajax,我有一张有3000个条目的表格。 我随机选择其中的25个,将其转移到另一个表中。 完成后,我希望原始表中的ID(分配为AUTO_INCREMENT并且是主键)按顺序排列,以便执行下一次迭代。 如何操作?我们不能将自动增量值更改为当前最大值以外的值。自动增量是一个不断递增的计数器,其值用于定义它的列 将其更改为略高于当前最大值的值的唯一其他方法是手动将自动增量计数器的值更改为最大值(值)+1 因此,我猜在删除25条记录后,您必须按现有Id对记录进行升序,并根据递增变量手动设置每条记录的Id值,最后

我有一张有3000个条目的表格。 我随机选择其中的25个,将其转移到另一个表中。 完成后,我希望原始表中的ID(分配为AUTO_INCREMENT并且是主键)按顺序排列,以便执行下一次迭代。
如何操作?

我们不能将自动增量值更改为当前最大值以外的值。自动增量是一个不断递增的计数器,其值用于定义它的列

将其更改为略高于当前最大值的值的唯一其他方法是手动将自动增量计数器的值更改为最大值(值)+1

因此,我猜在删除25条记录后,您必须按现有Id对记录进行升序,并根据递增变量手动设置每条记录的Id值,最后将自动递增计数值设置为末尾+1的变量值

样本:

改变表T 设置自动增量=某个值


尽管建议不要使用自动增量,如果只是为了让ID看起来更漂亮,并且没有其他可能的原因,那么就不要使用自动增量。这个问题可能每天都会被问到。答案是“不要这样做”。作为替代方案,您可以使用自动递增的新PK创建一个新表,并将所有剩余记录移动到该表中。但是为什么?是什么让您认为主键需要始终是完全连续的?(提示:不会)你不应该。主键可能是另一个表中的外键,也需要更改。如果你认为你需要这样做,那么你就做错了。一般规则?您永远不会追溯更改ID。重复使用ID总是一个坏主意。您试图通过更改ID来解决什么问题?如果您在任何表中使用这些ID作为外键(或者更糟的是作为数据链接),那么imo,将当前ID更改为“使其连续”是“没有用的”。但是,有趣的是,您使用的数据库关系id要求它们是连续的?这不是他们的目的。如果您想要一个连续的“应用程序id”。在我看来,您可以创建自己的应用程序,而不要尝试使用
数据库关系id
来处理应用程序中的意义。在我看来,这将以眼泪告终。i、 e保留一个单独的
顺序id
,供您的应用程序使用。这是解决方案的1%。另外99%的人正在跟踪所有对这些值的引用,并对其进行调整,同时清理由此产生的不可避免的混乱。