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

7

Решение

  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. Или же Добавьте первичный ключ в вашу таблицу, тогда вы можете легко удалить дубликаты из вашей таблицы.
    А затем добавить уникальный индекс.
9

Другие решения

использование alter table за это

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

Увидеть этот для получения дополнительной справки.

1

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

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

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

1
По вопросам рекламы [email protected]