Как создать уникальный индекс для существующей таблицы в 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 ответов


  1. если вы хотите иметь уникальный индекс empid_name в таблице сотрудников со столбцами (importcompany_id, employee_id, name, relationship). Затем необходимо удалить существующие дубликаты данных.

простой способ сделать это-добавить уникальный индекс на 4 столбца. когда вы пишете оператор ALTER, включите IGNORE ключевое слово. Вот так:

ALTER IGNORE TABLE `employee` ADD UNIQUE INDEX(importcompany_id, employee_id, name, relationship);

это приведет к удалению всех повторяющихся строк. В качестве дополнительного преимущества будущие вставки, которые являются дубликатами, будут ошибаться. Как всегда, вы можете принять резервное копирование перед запуском чего-то подобного.

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

использовать alter table для этого

 ALTER TABLE `employee` ADD UNIQUE INDEX(importcompany_id, employee_id, name, relationship);

посмотреть этой дополнительные справки.


самое простое решение-добавить новый столбец, называемый чем-то вроде UniqueID

Если вам это не нужно по какой-либо другой причине, вы можете просто настроить его на автоинкремент (AI): это будет бессмысленно, но, по крайней мере, это будет уникально

затем вы изменяете индексацию, чтобы столбец UniqueID был уникальным / первичным ключом. Если вы хотите сохранить индекс для employee, вы можете это сделать, но если у вас есть несколько записей с тем же значением в этом столбце, это будет вызовите ошибку, если вы укажете ее как уникальную.