jer*_*use 9 mysql auto-increment
我需要在现有表中添加自动增量ID.我做了:
ALTER TABLE table_name ADD column_name INT NOT NULL AUTO_INCREMENT FIRST ,
ADD PRIMARY KEY (column_name)
Run Code Online (Sandbox Code Playgroud)
但是,自动编号不是基于任何特定的列顺序.我希望mysql根据某列的顺序巧妙地输入自动数字.可能吗?
大多数答案都告诉您如何添加自动增量字段,而不是如何在现有表中控制这些数字.
小智 10
请注意,MySQL表只能有一个AUTO_INCREMENT属性列.
假设该表没有主键:
ALTER TABLE table_name ADD COLUMN new_id INT NOT NULL;
SET @x = 0;
UPDATE table_name SET new_id = (@x:=@x+1) ORDER BY whateveryouwant ASC;
ALTER TABLE table_name ADD PRIMARY KEY new_id (new_id);
ALTER TABLE table_name CHANGE new_id new_id INT NOT NULL AUTO_INCREMENT;
Run Code Online (Sandbox Code Playgroud)
假设该表已经有一个不增加的主键:
只需PRIMARY在第四个命令中省略关键字即可.
ALTER TABLE table_name ADD column_name INT FIRTS;将此字段作为主键的一部分并添加 AUTO_INCREMENT 选项 -
ALTER TABLE table_name CHANGE COLUMN id id INT(11) NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY (id);
编辑:
试试这个计划:
table_name.用表中的排序数据填充新table_name表:
INSERT INTO temp_table_name SELECT * FROM table_name ORDER BY name;
空table_name表:
截断表表名;
更改table_name表,添加新的自动增量字段并将其设为主要字段(您的代码)。
从临时复制数据。表到table_name:
INSERT INTO table_name SELECT NULL, t.* FROM temp_table_name t;