sql >> Databasteknik >  >> RDS >> Mysql

Hur man förhindrar dubbletter av poster från min tabell Insert ignore fungerar inte här

ändra tabellen genom att lägga till UNIQUE begränsning

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

men du kan göra detta om tabellen employee är tom.

eller om poster fanns, försök att lägga till IGNORE

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

UPPDATERING 1

Något gick fel, antar jag. Du behöver bara lägga till en unik begränsning i kolumnen ename sedan eno kommer alltid att vara unik på grund av AUTO_INCREMENT .

För att lägga till unika begränsningar måste du göra några rensningar på ditt bord.

Frågorna nedan tar bort några dubbletter av poster och ändrar tabell genom att lägga till en unik begränsning i kolumnen 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);

Här är en fullständig demonstration



  1. node.js async/await med MySQL

  2. Odefinierad egenskap:Illuminate\Database\Eloquent\Collection::Laravel 5.2

  3. Webbapplikationen [] verkar ha startat en tråd med namnet [Abandoned connection cleanup thread] com.mysql.jdbc.AbandonedConnectionCleanupThread

  4. 8 sätt att lägga till sekunder till ett Datetime-värde i MariaDB