php - 如何在包含记录的 MySQL 中为现有表创建唯一索引

标签 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' 

帮我解决这个问题,我需要让字段唯一

更新:

设置这些字段唯一的原因是

其实我有一张这样的 table

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

最佳答案

  1. 如果您想在包含列(importcompany_id, employee_id, name, relationship) 的员工表上创建唯一索引empid_name。然后,您必须删除现有的重复数据。

执行此操作的简单方法是在 4 列上添加 UNIQUE 索引。 在编写 ALTER 语句时,包括 IGNORE 关键字。像这样:

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

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

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

关于php - 如何在包含记录的 MySQL 中为现有表创建唯一索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33361281/

相关文章:

php - 如何删除一些重复的行

php - 有什么方法可以检查用户是否已经订阅了我的 YouTube channel ?

php - Laravel 迁移返回无效的 SQL

javascript - 我如何传递这个 id 变量?

php - 如何删除 mysql 中计数大于 1 的货币?

MySQL 静态哈希索引

php - 将 mit inventor2 链接到 sql 数据库错误 1109

sql-server - 包含 1.5 亿页的 100,000 个 PDF 的文本索引

python - 构建 Whoosh 索引时超出最大递归深度

mysql - mysql 5.0 是否索引空值?