我需要为现有表添加自动增量ID。我做了:
ALTER TABLE table_name ADD column_name INT NOT NULL AUTO_INCREMENT FIRST ,
ADD PRIMARY KEY (column_name)
但是,自动编号不是基于任何特定的列顺序。我希望mysql根据某列的顺序巧妙地输入自动数字。有可能吗?
那里的大部分答案都告诉你如何添加自动增量字段,而不是如何在现有表格中控制这些数字。
答案 0 :(得分:8)
请注意,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;
假设表已经有一个不增加的主键:
只需在第四个命令中省略PRIMARY
关键字。
答案 1 :(得分:3)
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, 添加PRIMARY KEY(id);
修改强>
试试这个计划:
table_name
相同。使用table_name
表中的已排序数据填充新表:
INSERT INTO temp_table_name SELECT * FROM table_name ORDER BY name;
清空table_name
表:
TRUNCATE TABLE table_name;
更改table_name
表格,添加新的自动增量字段并将其设为主要字段(您的代码)。
从temp复制数据。表到table_name
:
INSERT INTO table_name SELECT NULL,t。* FROM temp_table_name t;