Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So verhindern Sie, dass doppelte Datensätze aus meiner Tabelle eingefügt werden. Ignorieren funktioniert hier nicht

Ändern Sie die Tabelle, indem Sie UNIQUE hinzufügen Einschränkung

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

aber Sie können dies tun, wenn die Tabelle employee ist leer.

oder wenn Datensätze vorhanden sind, versuchen Sie, IGNORE hinzuzufügen

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

AKTUALISIERUNG 1

Irgendetwas ist schief gelaufen, denke ich. Sie müssen nur der Spalte ename eine eindeutige Einschränkung hinzufügen seit eno wird aufgrund von AUTO_INCREMENT immer eindeutig sein .

Um Unique Constraint hinzuzufügen, müssen Sie einige Aufräumarbeiten an Ihrer Tabelle vornehmen.

Die folgenden Abfragen löschen einige doppelte Datensätze und ändern die Tabelle, indem sie der Spalte ename eine eindeutige Einschränkung hinzufügen .

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);

Hier ist eine vollständige Demonstration