我想解释一下我的问题,
我需要在现有表中创建唯一索引,该表包含许多记录。
我试图执行此代码
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'
帮我解决这个问题,我需要让字段独一无二p>
已更新:
设置这些字段唯一的原因是
其实我有一张这样的表
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工作表导入完成的
答案 0 :(得分:9)
empid_name
的员工表上具有唯一索引(importcompany_id, employee_id, name, relationship)
。然后,您必须删除现有的重复数据。简单的方法是在4列上添加UNIQUE索引。 撰写ALTER语句时,请添加IGNORE
关键字。像这样:
ALTER IGNORE TABLE `employee` ADD UNIQUE INDEX(importcompany_id, employee_id, name, relationship);
这将删除所有重复的行。作为一个额外的好处,未来的重复INSERT将会出错。与往常一样,您可能希望在运行此类内容之前进行备份。
答案 1 :(得分:1)
答案 2 :(得分:1)
最简单的解决方案是添加一个名为UniqueID
的新列如果您因任何其他原因不需要它,您可以简单地将其设置为AutoIncrement(AI):它将毫无意义,但至少它将是唯一的
然后,您可以更改索引,以便UniqueID列是唯一/主键。如果要在员工上维护索引,可以这样做,但如果在该列中有多个具有相同值的记录,则如果将其指定为唯一,则会引发错误。