How to prevent Duplicate records from my table Insert ignore does not work here

前端 未结 3 1588
情书的邮戳
情书的邮戳 2020-12-05 19:54
mysql> select * from emp;

    +-----+---------+------+------+------+
    | eno | ename   | dno  | mgr  | sal  |
    +-----+---------+------+------+------+
    |          


        
3条回答
  •  鱼传尺愫
    2020-12-05 20:44

    alter the table by adding UNIQUE constraint

    ALTER TABLE employee ADD CONSTRAINT emp_unique UNIQUE (ename,dno,mgr,sal)
    

    but you can do this if the table employee is empty.

    or if records existed, try adding IGNORE

    ALTER IGNORE TABLE employee ADD CONSTRAINT emp_unique UNIQUE (ename,dno,mgr,sal)
    

    UPDATE 1

    Something went wrong, I guess. You only need to add unique constraint on column ename since eno will always be unique due to AUTO_INCREMENT.

    In order to add unique constraint, you need to do some cleanups on your table.

    The queries below delete some duplicate records, and alters table by adding unique constraint on column ename.

    DELETE a
    FROM Employee a
         LEFT JOIN
         (
            SELECT ename, MIN(eno) minEno
            FROM Employee
            GROUP BY ename
         ) b ON a.eno = b.minEno
    WHERE b.minEno IS NULL;
    
    ALTER TABLE employee ADD CONSTRAINT emp_unique UNIQUE (ename);
    

    Here's a full demonstration

    • SQLFiddle Demo

提交回复
热议问题