【问题标题】:MySQL Update command with auto increment [duplicate]具有自动增量的 MySQL 更新命令 [重复]
【发布时间】:2014-12-14 22:06:50
【问题描述】:

我有一个名为users_items 的表。在此表中有 3 列。其中 1 个称为 id。此表中有大约 100.000 - 150.000 个数据。 id 设置为 AUTO_INCREMENT

我想将所有 id 重置为 0,然后用数字 1、2、3、4、5、6 替换。

【问题讨论】:

  • 你想为每一行插入你自己的 id 吗?
  • 你想保留数据吗?
  • 我想保留数据,但只更改 id,例如 108843 将其设为 1 并将下一个设为 2
  • Try this你可能会找到一些东西
  • 虽然很清楚你想做什么,但尽量以问题的形式提出问题。只是一个抬头。具体到你的问题,有很多因素需要考虑。在你对它做这样的事情之前,我会备份这张桌子。

标签: mysql


【解决方案1】:

您不能同时将它们全部设为 0,因为 PK 不能有重复项。

使用 phpMyAdmin 或您想要的任何工具或使用 SQL 查询创建表的副本。

然后使用以下命令从原始表中删除所有数据:

DELETE users_items

或者:

TRUNCATE users_items

然后使用以下方法重置自动增量:

ALTER TABLE users_items AUTO_INCREMENT = 1

如果您使用了TRUNCATE,那么您将不必重置自动递增计数器。

在此之后,您可以使用SELECTINSERT 将复制表中的数据返回到该表:

INSERT INTO users_items (col2, col3...) SELECT col2, col3,... FROM users_items_copy

(注意:在选择和插入行时,没有触及 id 列。)

【讨论】:

  • 我会试试这个先生谢谢。
  • 如果有的话,请发表评论:-)
  • 但是先生,有像 150k 这样的数据,我无法为所有这些数据写入插入命令:D
  • 插入正在使用选择。它将从表副本中选择所有数据并将它们自己插入到当前数据中。只需一个命令即可完成所有工作。
【解决方案2】:

要从一个开始,只需执行以下操作:

  ALTER TABLE tablename AUTO_INCREMENT = 1

如果需要参考使用以下链接:

更改表: http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

自动递增/重置主键: Reorder / reset auto increment primary key

Mysql 重置自动增量: http://www.mysqltutorial.org/mysql-reset-auto-increment

【讨论】:

  • 感谢您的回复,但我想将 auto_increment 重置为正确,但我想将 auto_increment 应用于所有行。
猜你喜欢
  • 2021-06-03
  • 1970-01-01
  • 1970-01-01
  • 2012-11-01
  • 1970-01-01
  • 2019-03-04
  • 2021-02-17
  • 1970-01-01
相关资源
最近更新 更多