如何为MySQL中包含记录

时间:2015-10-27 06:32:05

标签: php mysql indexing duplicates unique-index

我想解释一下我的问题,

我需要在现有表中创建唯一索引,该表包含许多记录。

我试图执行此代码

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工作表导入完成的

3 个答案:

答案 0 :(得分:9)

  1. 如果您希望在具有列empid_name的员工表上具有唯一索引(importcompany_id, employee_id, name, relationship)。然后,您必须删除现有的重复数据。
  2. 简单的方法是在4列上添加UNIQUE索引。 撰写ALTER语句时,请添加IGNORE关键字。像这样:

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

    这将删除所有重复的行。作为一个额外的好处,未来的重复INSERT将会出错。与往常一样,您可能希望在运行此类内容之前进行备份。

    1. 在表格中添加主键,然后您就可以轻松地从表格中删除重复项。 然后添加唯一索引。

答案 1 :(得分:1)

将<{1}}用于此

alter table

有关详情,请参阅this

答案 2 :(得分:1)

最简单的解决方案是添加一个名为UniqueID

的新列

如果您因任何其他原因不需要它,您可以简单地将其设置为AutoIncrement(AI):它将毫无意义,但至少它将是唯一的

然后,您可以更改索引,以便UniqueID列是唯一/主键。如果要在员工上维护索引,可以这样做,但如果在该列中有多个具有相同值的记录,则如果将其指定为唯一,则会引发错误。