如何整理id列?

luofeiyu
  • 1.5k

id是自增列,删除了许多数据,因此id列不连续。
如何在保留其他列不变的情况下,将id列重置,从1开始?

尝试了

alter table table_name auto_increment = 0;
不行

回复
阅读 3.4k
3 个回答

可以先将自增ID字段删除,再重新建一个自增的ID字段,就会重新排列。

alter table table_name auto_increment = 0;是将表数据全部清空以后才会重新开始从0自增

154538022
  • 488

a.sql:

use test
delimiter //
create procedure create_table(in table_name text)
    begin
        declare i int default 0;
        create table if not exists table_name(id int primary key auto_increment,content char(50));
        while i < 6 do
            insert into table_name values(null,"hello"); 
            set i = i+1;
        end while;
        select * from     table_name;
        delete from     table_name where id in (1,3,5);
        select * from     table_name;
        alter table table_name drop column id;
        alter table table_name add column id int primary key auto_increment;
        select * from table_name;
        drop table if exists table_name;        
    end;
call create_table('hello');
drop procedure create_table;
//
delimiter ;

mysql> source D:\phpStudy1\WWW\myexpress\koa-note\a.sql
Database changed
Query OK, 0 rows affected (0.00 sec)

id content
1 hello
2 hello
3 hello
4 hello
5 hello
6 hello

6 rows in set (0.06 sec)

id content
2 hello
4 hello
6 hello

3 rows in set (0.07 sec)

content id
hello 1
hello 2
hello 3

3 rows in set (0.20 sec)

Query OK, 0 rows affected (0.20 sec)

Query OK, 0 rows affected (0.20 sec)

邓龙
  • 3
新手上路,请多包涵

新建一列序号列,成功对应了之后,将ID列删除,并将序号列定义为ID列。

宣传栏