我有一个要修改为主键和自动增量的列。它有一些好的值(都是唯一的)并且有一些NULL值。我不能自动递增它,因为它不是主键,我不能使它成为主键,因为它没有自动递增以给NULL一些值。
我该如何解决这个问题?
示例:
1 |data...
2 |data...
3 |data...
NULL|data...
NULL|data...
答案 0 :(得分:2)
首先,您需要将这些NULL
值设置为唯一的行ID,然后您可以使用PRIMARY KEY
将行更改为AUTO_INCREMENT
。
尝试这样的事情:
SET @lastID = 3; -- The highest value in your table, MAX(rowID)
UPDATE mytable
SET rowID = (@lastID := @lastID+1)
WHERE rowID IS NULL;
那应该"修复" NULL
并将它们设置为值。然后你就可以做出关键:
ALTER TABLE mytable
MODIFY rowID INT NOT NULL PRIMARY KEY AUTO_INCREMENT;