如何根据列的顺序添加自动增量主键?
我需要将自动增量ID添加到已经存在的表中。我做了:如何根据列的顺序添加自动增量主键?
ALTER TABLE table_name ADD column_name INT NOT NULL AUTO_INCREMENT FIRST ,
ADD PRIMARY KEY (column_name)
但是,自动编号wasnt基于任何特定的列顺序。我希望mysql根据某个列的顺序巧妙地放置自动编号。可能吗?
大部分答案都告诉你如何添加自动增量字段,而不是如何控制已有表中的数字。在新的领域ALTER TABLE table_name ADD column_name INT FIRTS;
- 添加一个新的领域。
-
使这个字段作为主键的一部分,并添加AUTO_INCREMENT选项 -
ALTER TABLE表名 更改列的ID INT(11)NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY(ID);
编辑:
试试这个计划:
- 创建一个表,同为
table_name
。 -
从
table_name
表填充与排序的数据的新表:INSERT INTO temp_table_name SELECT * FROM表名ORDER BY名;
-
空
table_name
表:TRUNCATE TABLE TABLE_NAME;
更改
table_name
表,添加新的自动增量字段并将其设置为主(您的代码)。-
复制temp中的数据。表
table_name
:INSERT INTO table_name SELECT NULL,t。* FROM temp_table_name t;
请注意,MySQL表只能有一列与AUTO_INCREMENT
属性。
假设表不具有主键:
ALTER TABLE table_name ADD COLUMN new_id INT NOT NULL;
SET @x = 0;
UPDATE table_name SET new_id = (@x:[email protected]+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;
假设表已经具有非递增主键:
只要ommit的PRIMARY
关键字在第四命令。
只要有一个索引(键),就可以有一个不是PRIMARY KEY的自动递增列。您可以使用此代码将索引添加到列ALTER TABLE table_name ADD INDEX new_id(new_id); – Salar
谢谢你的答案devart。在第2步中,我不想手动填充字段。而是让它们根据column_name的排列顺序自动填充 – jerrymouse
我已经添加了一个解决方案。 – Devart