Как создать уникальный индекс для существующей таблицы в MySQL, которая содержит записи
здесь я хотел бы объяснить мою проблему,
мне нужно создать уникальный индекс в существующей таблице, а таблица содержит много записей.
Я пытался выполнить этот код
CREATE UNIQUE INDEX empid_name ON employee (importcompany_id, employee_id, name, relationship);
но я получаю ошибку как
#1062 - Duplicata du champ '0-Emp ID-Member Name-Relationship' pour la clef 'empid_name'
помогите мне разобраться в этой проблеме, мне нужно сделать уникальные поля
обновление :
причина установки этих полей уникальна -
на самом деле у меня есть таблица, как это
id company_ID Employee_ID Name Relationship Dob Age Gender
1 EMPL 00001 Choodamani Spouse 11-Aug-66 49 Female
2 EMPL 00001 Komala Mother 30-Oct-39 76 Female
3 EMPL 00001 Varshini Daughter 29-Apr-04 11 Female
4 EMPL 00001 Vasudevan Employee 15-Jul-62 53 Male
5 EMPL 00002 Siddharth Son 1-Jun-00 15 Male
6 EMPL 00002 Poongavanam Mother 21-Oct-39 76 Female
7 EMPL 00002 Aruna Spouse 16-Sep-68 47 Female
8 EMPL 00002 Abirami Daughter 7-May-97 18 Female
9 EMPL 00002 Murali Employee 7-Oct-67 48 Male
если есть вставить данные, как это,
id company_ID Employee_ID Name Relationship Dob Age Gender
1 EMPL 00001 Choodamani Spouse 11-Aug-70 45 Female
2 EMPL 00001 Nirmal Son 30-Oct-39 76 Female
эта вставка или обновление выполняется путем импорта с помощью Excel sheet
3 ответов
- если вы хотите иметь уникальный индекс
empid_name
в таблице сотрудников со столбцами(importcompany_id, employee_id, name, relationship)
. Затем необходимо удалить существующие дубликаты данных.
простой способ сделать это-добавить уникальный индекс на 4 столбца. когда вы пишете оператор ALTER, включите IGNORE
ключевое слово. Вот так:
ALTER IGNORE TABLE `employee` ADD UNIQUE INDEX(importcompany_id, employee_id, name, relationship);
это приведет к удалению всех повторяющихся строк. В качестве дополнительного преимущества будущие вставки, которые являются дубликатами, будут ошибаться. Как всегда, вы можете принять резервное копирование перед запуском чего-то подобного.
- или добавить первичный ключ в вашей таблице, то вы можете легко удалить дубликаты из таблицы. А затем добавьте уникальный индекс.
использовать alter table
для этого
ALTER TABLE `employee` ADD UNIQUE INDEX(importcompany_id, employee_id, name, relationship);
посмотреть этой дополнительные справки.
самое простое решение-добавить новый столбец, называемый чем-то вроде UniqueID
Если вам это не нужно по какой-либо другой причине, вы можете просто настроить его на автоинкремент (AI): это будет бессмысленно, но, по крайней мере, это будет уникально
затем вы изменяете индексацию, чтобы столбец UniqueID был уникальным / первичным ключом. Если вы хотите сохранить индекс для employee, вы можете это сделать, но если у вас есть несколько записей с тем же значением в этом столбце, это будет вызовите ошибку, если вы укажете ее как уникальную.