Mysql
 sql >> Database >  >> RDS >> Mysql

Come impedire i record duplicati dalla mia tabella Inserisci ignora non funziona qui

modificare la tabella aggiungendo UNIQUE vincolo

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

ma puoi farlo se la tabella employee è vuoto.

o se esistevano record, prova ad aggiungere IGNORE

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

AGGIORNAMENTO 1

Qualcosa è andato storto, credo. Devi solo aggiungere un vincolo univoco sulla colonna ename da eno sarà sempre univoco a causa di AUTO_INCREMENT .

Per aggiungere un vincolo univoco, devi eseguire alcune pulizie sul tuo tavolo.

Le query seguenti eliminano alcuni record duplicati e alterano la tabella aggiungendo un vincolo univoco sulla colonna 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);

Ecco una dimostrazione completa