当前位置: 首页 > 面试题库 >

删除其中一些表格后,修复mysql表行ID中的空白

越学义
2023-03-14
问题内容

我有一个超过17000行的mysql表。我从其中的一部分删除了大约530行。现在,每一行都有一个顺序的AUTO-
INCREAMENTED数字主键。如您所了解,现在已删除了若干行编号。所以我只想问问有没有办法以某种完美的顺序再次修复所有行?


问题答案:

您可以 但要小心 使用此主键作为外键的其他表

SET @count = 0;
UPDATE table SET table.id = @count:= @count + 1;

这将更新id表的列table…然后您需要重置auto_increment:

ALTER TABLE table AUTO_INCREMENT = 1;

这会将下一个ID重置为MAX(id)+1来自docs:

要更改用于新行的AUTO_INCREMENT计数器的值,请执行以下操作:

ALTER TABLE t2 AUTO_INCREMENT = value;

您不能将计数器重置为小于或等于已使用的值。对于MyISAM,如果该值小于或等于AUTO_INCREMENT列中当前的最大值,则该值将重置为当前的最大值加1。



 类似资料:
  • 本文向大家介绍修复MySQL中的删除表视图#1051未知表错误,包括了修复MySQL中的删除表视图#1051未知表错误的使用技巧和注意事项,需要的朋友参考一下 要正确放置视图,请使用以下语法- 让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 输出结果 这将产生以下输出- 让我们首先创建一个视图- 现在,我们将显示视图的记录- 输出结果 这将产生以

  • 问题内容: 我有一张像这样的桌子: ID为 ,自创建表以来一直在使用。 我想要做的是删除除一个记录以外的所有记录,其中所有其他列都相同。 问题答案: 当然,您必须在所有三个位置将col1,col2扩展到所有列。 编辑:我只是从保留的脚本中重新进行了测试,然后重新测试,它在MySQL中执行。

  • 我刚刚开始使用Google Apps脚本来管理我正在处理的项目的一些工作表,我对Javascript还不熟悉,所以如果我的代码中有任何吼叫,请不要着急!。 我们有一个名为forms2mobile的应用程序,它可以捕获数据并将其放入Google电子表格中。它实际上会根据您使用的应用程序的哪个部分将不同的数据放入不同的工作表中。 我已经拼凑了一个脚本,该脚本从一个工作表(源)中提取所有数据,并仅将某些

  • 问题内容: 我有大约20GB的数据库。我需要删除5个表并在其他3个表中删除几列。 删除5个表以释放大约3 GB的空间,而删除其他表中的列则应释放另外8GB的空间。 如何从MySQL回收此空间。 我已经读过转储数据库并将其还原为解决方案之一,但我不确定该如何工作,甚至不确定这是否仅适用于删除整个数据库或仅删除部分数据库? 请提出解决方法。谢谢。 问题答案: 从注释中,听起来好像您正在使用InnoDB

  • 问题内容: 范围:两个表。创建新的顾客时,他们会将有关他们的一些信息存储到第二张表中(这也使用触发器完成,它可以按预期工作)。这是我的表结构和关系的示例。 表1-> 顾客 表2-> patron_info 管理员可以管理顾客。当他们选择移走顾客时,将顾客从 桌子1 移开。此时, 表2 没有任何反应。 我只是想创建一个触发器,以便在表1的项目已删除时从表2中删除。这是我尝试过的… 最初,我尝试删除触

  • 问题内容: 我有一张有几千行的表。该表包含两列,和。我有几个重复的行,例如: John Smith | john@smith.com JJohn Smith | john@smith.com JErica Smith | erica@smith.com JErica Smith | erica@smith.com 删除所有重复结果的最简单方法是什么。例如,使表的内容为= 。 问题答案: 您可以很容