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

Sådan forhindres duplikatposter fra min tabel. Indsæt ignorering virker ikke her

ændre tabellen ved at tilføje UNIQUE begrænsning

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

men du kan gøre dette, hvis tabellen employee er tom.

eller hvis der eksisterede poster, prøv at tilføje IGNORE

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

OPDATERING 1

Noget gik galt, tror jeg. Du behøver kun at tilføje en unik begrænsning på kolonnen ename siden eno vil altid være unik på grund af AUTO_INCREMENT .

For at tilføje en unik begrænsning skal du lave nogle oprydninger på dit bord.

Forespørgslerne nedenfor sletter nogle duplikerede poster og ændrer tabel ved at tilføje en unik begrænsning på kolonnen 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);

Her er en komplet demonstration



  1. JOIN (VÆLG ... ) ue ON 1=1?

  2. Minimering af virkningen af ​​at udvide en IDENTITY-søjle – del 4

  3. genbruge alias i SELECT

  4. 2 måder at returnere Unix-tidsstemplet i SQLite