Здесь я хотел бы объяснить мою проблему,
Мне нужно создать уникальный индекс в моей существующей таблице, и таблица содержит много записей.
Я пытался выполнить этот код
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
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.
Если вам это не нужно по какой-либо другой причине, вы можете просто установить его на AutoIncrement (AI): это будет бессмысленно, но, по крайней мере, будет уникальным
Затем вы изменяете свою индексацию таким образом, чтобы столбец UniqueID представлял собой уникальный / первичный ключ. Если вы хотите сохранить индекс для сотрудника, вы можете сделать это, но если у вас есть несколько записей с одним и тем же значением в этом столбце, будет выдано сообщение об ошибке, если вы укажете его как уникальный.