MySQL - создать существующее поле уникальное

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

Как я могу сделать это поле только для принятия уникальных значений?

Ответ 1

ALTER IGNORE TABLE mytbl ADD UNIQUE (columnName);

Для MySQL 5.7.4 или новее:

ALTER TABLE mytbl ADD UNIQUE (columnName);

В соответствии с MySQL 5.7.4 предложение IGNORE для ALTER TABLE удаляется и его использование вызывает ошибку.

Итак, сначала удалите повторяющиеся записи, так как ключевое слово IGNORE больше не поддерживается.

Ссылка

Ответ 2

Просто напишите этот запрос в вашей базе данных phpmyadmin.

ALTER TABLE TableName ADD UNIQUE (FieldName)

Например: ALTER TABLE user ADD UNIQUE (email)

Ответ 3

Если вы также хотите назвать ограничение, используйте это:

ALTER TABLE myTable
  ADD CONSTRAINT constraintName 
    UNIQUE (columnName);

Ответ 4

CREATE UNIQUE INDEX foo ON table_name (field_name)

Вы должны удалить повторяющиеся значения в этом столбце перед выполнением этого sql. Любое существующее повторяющееся значение в этом столбце приведет к ошибке mysql 1062

Ответ 5

Самый простой и быстрый способ - создать таблицу структуры phpmyadmin.

USE PHPMYADMIN ADMIN PANEL!

Там он на русском языке, но в английской версии должен быть одинаковым. Просто нажмите кнопку "Уникальная". Также оттуда вы можете сделать свои столбцы PRIMARY или DELETE.

Ответ 6

ALTER IGNORE TABLE mytbl ADD UNIQUE (columnName);

- правильный ответ

часть вставки

INSERT IGNORE INTO mytable ....

Ответ 7

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

alter ignore table ioni_groups add unique (group_name);