Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment empêcher les enregistrements en double de ma table Insérer ignorer ne fonctionne pas ici

modifier le tableau en ajoutant UNIQUE contrainte

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

mais vous pouvez le faire si la table employee est vide.

ou si des enregistrements existaient, essayez d'ajouter IGNORE

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

MISE À JOUR 1

Quelque chose s'est mal passé, je suppose. Il vous suffit d'ajouter une contrainte unique sur la colonne ename depuis eno sera toujours unique en raison de AUTO_INCREMENT .

Afin d'ajouter une contrainte unique, vous devez faire quelques nettoyages sur votre table.

Les requêtes ci-dessous suppriment certains enregistrements en double et modifient la table en ajoutant une contrainte unique sur la colonne 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);

Voici une démonstration complète