Как обновить таблицу, чтобы добавить первичный ключ и обновить все существующие строки с увеличенными идентификаторами? - PullRequest
4 голосов
/ 03 ноября 2011

У меня есть таблица с 20 000 строк данных, которые я импортировал, но я забыл поставить первичный ключ, чтобы у каждой строки был уникальный ключ.

Я хочу, чтобы первая строка начиналась с идентификатора 1 и увеличивалась до последней строки и заканчивалась идентификатором 20000. Как обновить все строки одним запросом?

Я использую MySQL. Попытался использовать PhpMyAdmin, но он этого не сделает.

Ответы [ 2 ]

5 голосов
/ 03 ноября 2011

После добавления нового столбца идентификатора (пока не устанавливайте в качестве первичного ключа и не включайте автоинкремент) выполните:

SET @index = 1;
UPDATE tablename SET ID = (@index:=@index+1);

Устанавливает увеличивающееся значение идентификатора, начиная с 1на каждую из существующих строк, что решает проблему с дубликатом ключа, с которой вы столкнетесь, если попытаетесь вставить новый столбец первичного ключа после того, как данные уже введены.

Как только это будет сделано, вы можете установить столбец идентификатора какпервичный ключ с автоинкрементом.

4 голосов
/ 03 ноября 2011

Измените tablename и выполните следующую инструкцию SQL.Он создаст новый первичный ключ с именем id и заполнит его, начиная с первой строки, как 1.

ALTER TABLE `tablename` ADD COLUMN id INT(10) AUTO_INCREMENT NOT NULL FIRST, ADD PRIMARY KEY (id);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...