当前位置: 首页 > 知识库问答 >
问题:

MySQL从表中删除所有行并将ID重置为零

贺景胜
2023-03-14

我需要删除表中的所有行,但当我添加新行时,我希望主键ID(具有自动增量)分别从1开始从0开始。

共有3个答案

米飞龙
2023-03-14

如果表有外键,则我始终使用以下代码:

SET FOREIGN_KEY_CHECKS = 0; -- disable a foreign keys check
SET AUTOCOMMIT = 0; -- disable autocommit
START TRANSACTION; -- begin transaction

/*
DELETE FROM table_name;
ALTER TABLE table_name AUTO_INCREMENT = 1;
-- or
TRUNCATE table_name;
-- or
DROP TABLE table_name;
CREATE TABLE table_name ( ... );
*/

SET FOREIGN_KEY_CHECKS = 1; -- enable a foreign keys check
COMMIT;  -- make a commit
SET AUTOCOMMIT = 1 ;

但区别在于执行时间。看看上面索林的回答。

芮宇航
2023-03-14

如果您不能使用TRUNCATE(例如,由于外键限制),您可以在删除所有行后使用更改表来重新启动auto_increment:

ALTER TABLE mytable AUTO_INCREMENT = 1
房学文
2023-03-14

不要删除,请使用截断:

Truncate table XXX

表处理程序不记得上次使用的AUTO_INCREMENT值,而是从头开始计数。即使对于MyISAM和InnoDB也是如此,它们通常不会重用序列值。

来源。

 类似资料:
  • 问题内容: 这个问题已经在这里有了答案 : 在MySQL中删除重复的行 (25个答案) 3个月前关闭。 如何从MySQL表中删除所有重复数据? 例如,具有以下数据: 我会使用,如果它是一个查询。 我该怎么做才能只删除重复项并仅保留每个记录一个? 问题答案: 编辑者警告:此解决方案的计算效率低下,可能会降低大型表的连接。 注意:您 需要 首先在表的 测试副本 上执行此操作! 完成此操作后,我发现,除

  • 问题内容: 我有100个表,每个表40,000行。我想进入MySQL并从 所有* 表中删除 所有 行。 * …如果可能的话,用1条陈述? 我想保留数据库和表。 问题答案: 我不这么认为(但以前我做错了)。我倾向于做的是那些情况,这是一个两步过程。 如果您的DBMS具有命令行界面,则可以使用它来创建脚本来完成大部分工作,例如: 第一位只是简单地创建一个文件(或Windows下的文件),该文件包含所拥

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

  • 问题内容: 这是正确的方法吗? 问题答案: 对,那是正确的。在这里工作正常: 如果对您不起作用,则可以修改此示例以显示您遇到的问题。

  • 问题内容: 从视图中删除一行,是否会从创建该视图的基表中删除相应的行?我正在使用MySQL。 问题答案: 是的,它会的。唯一需要注意的是权限。 引用官方文档 有些观点是可更新的。也就是说,您可以在诸如UPDATE,DELETE或INSERT之类的语句中使用它们来更新基础表的内容。为了使视图可更新,视图中的行与基础表中的行之间必须存在一对一的关系。还有某些其他构造会使视图不可更新。

  • 问题内容: 我将如何使用python检查列表并删除所有重复项?我不需要指定重复项是什么- 我希望代码找出是否存在重复项,如果有则将其删除,每个重复项仅保留一个实例。如果列表中有多个重复项,它也必须起作用。 例如,在下面的代码中,列表lseparatedOrbList有12个项目-一项被重复六次,一项被重复五次,并且只有一个实例。我希望它更改列表,因此只有三项-每一项,并且它们之前出现的顺序相同。我