sql >> Database >  >> RDS >> Mysql

Hoe dubbele records uit mijn tabel te voorkomen Negeren invoegen werkt hier niet

verander de tabel door UNIQUE . toe te voegen beperking

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

maar u kunt dit doen als de tabel employee is leeg.

of als er records waren, probeer dan IGNORE toe te voegen

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

UPDATE 1

Er is iets misgegaan, denk ik. U hoeft alleen een unieke beperking toe te voegen aan kolom ename sinds eno zal altijd uniek zijn vanwege AUTO_INCREMENT .

Om een ​​unieke beperking toe te voegen, moet je wat opschonen op je tafel.

De onderstaande query's verwijderen enkele dubbele records en wijzigen de tabel door een unieke beperking toe te voegen aan kolom 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);

Hier is een volledige demonstratie



  1. NLS_COLLATION_NAME() Functie in Oracle

  2. Filter DataGrid voor naam dynamisch met TextBox

  3. Oracle verbinden met Amazon Aurora

  4. Werk kolommen bij als invoerwaarden niet null zijn, anders negeer en bewaar de bestaande waarden van kolom in database