我有一个带有自动增量主键的MySQL表.我删除了表中间的一些行.现在我在ID列中有这样的东西:12,13,14,19,20.我删除了15,16,17和18行.
我想重新分配/重置/重新排序主键,以便我有连续性,即使19 a 15,20 a 16,依此类推.
我该怎么做?
Ans*_*hul 340
即使这个问题看起来很旧,也会为在这里搜索到达的人发布答案.
SET @count = 0;
UPDATE `users` SET `users`.`id` = @count:= @count + 1;
Run Code Online (Sandbox Code Playgroud)
如果该列在其他表中用作外键,请确保使用这些表中的外键关系ON UPDATE CASCADE
的默认值而不是默认值ON UPDATE NO ACTION
.
此外,为了重置AUTO_INCREMENT
计数,您可以立即发出以下语句.
ALTER TABLE `users` AUTO_INCREMENT = 1;
Run Code Online (Sandbox Code Playgroud)
对于MySQL,它会将值重置为MAX(id) + 1
.
Tom*_*igh 87
您可以删除主键列并重新创建它.然后应按顺序重新分配所有ID.
然而,在大多数情况下,这可能是一个坏主意.如果你有其他表有这个表的外键,那么它肯定不会工作.
Rya*_*yan 55
要重置我的User表的ID,我使用以下SQL查询.上面已经说过,这将破坏你与任何其他表格之间的任何关系.
ALTER TABLE `users` DROP `id`;
ALTER TABLE `users` AUTO_INCREMENT = 1;
ALTER TABLE `users` ADD `id` int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
Run Code Online (Sandbox Code Playgroud)
小智 30
您可以简单地使用此查询
alter table abc auto_increment = 1;
Run Code Online (Sandbox Code Playgroud)
小智 14
SET @num := 0;
UPDATE your_table SET id = @num := (@num+1);
ALTER TABLE your_table AUTO_INCREMENT =1;
Run Code Online (Sandbox Code Playgroud)
我想这会做到的
SELECT * from `user` ORDER BY `user_id`;
SET @count = 0;
UPDATE `user` SET `user_id` = @count:= @count + 1;
ALTER TABLE `user_id` AUTO_INCREMENT = 1;
Run Code Online (Sandbox Code Playgroud)
如果你想order by
归档时间: |
|
查看次数: |
201197 次 |
最近记录: |