现在我有一个包含一些列和大量数据的表:
表1
Column1 Column2 Column3
data1(string) data2 data3
目前,主键是用字符串键入的column1。我需要添加一个新列Column0和seriel interger,一个真正的索引。我怎么能用mysql索引呢?
答案 0 :(得分:0)
首先,你必须介绍新专栏:
ALTER TABLE Table1 ADD COLUMN Column0 INTEGER(10)
以您想要的任何方式在新列中插入ID;例如,可以通过脚本完成。
如果这样做,重新定义PK:
ALTER TABLE Table1 DROP PRIMARY KEY;
插入自动增量:
ALTER TABLE Table1 change column Column0 PRIMARY KEY AUTO_INCREMENT;
确保您的auto_increment值为您上次ID的值:
ALTER TABLE Table1 AUTO_INCREMENT = value_of_max_id+1_you_have;
答案 1 :(得分:0)
像这样的东西
//First add a extra column.
ALTER TABLE table1
ADD COLUMN column0 INTEGER NOT NULL;
//Fill the column with incrementing integers in the same order as the old index.
UPDATE table1 SET column0 = @rank:= @rank + 1
CROSS JOIN (SELECT @rank:= 0) init_rank
ORDER BY column1 ASC;
//Remove the old primary key.
ALTER TABLE table1 DROP PRIMARY KEY;
//Set column0 as the new PK.
ALTER TABLE table1 CHANGE COLUMN column0 PRIMARY KEY AUTO_INCREMENT;