Intereting Posts
Удаление повторяющихся дублирующихся символов ORA-00942: таблица или представление не существует (работает, когда отдельный sql, но не работает внутри функции oracle) Конкретный приведение недействительно, в то время как получение scope_identity Извлечение данных xml с использованием запроса oracle MySQL: транзакции против таблиц блокировки Отфильтруйте нефильтрованную таблицу со списком белых списков Как документировать базу данных Postgres: Вставить, если не существует, в противном случае вернуть строку Эффективный запрос только для первых N строк для каждого уникального идентификатора Запросить сотрудника из двух или нескольких отделов Вычисление с использованием переменных в запросе MYSQL Логика повторной логики базы данных SQL Azure Я бы хотел, чтобы некоторые советы, почему это не будет вставлять данные в мою таблицу SQL Комбинации запросов с вложенным массивом записей в формате данных JSON Возвращение анонимного типа с использованием запроса SqlQuery RAW в платформе Entity Framework

Как обновить таблицу для добавления первичного ключа и обновить все существующие строки с добавочными идентификаторами?

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

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

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

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

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

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

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

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

 ALTER TABLE `tablename` ADD COLUMN id INT(10) AUTO_INCREMENT NOT NULL FIRST, ADD PRIMARY KEY (id);