sql >> Databáze >  >> RDS >> Mysql

Jak zabránit duplicitním záznamům z mé tabulky Vložit ignorování zde nefunguje

změňte tabulku přidáním UNIQUE omezení

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

ale můžete to udělat, pokud tabulka employee je prázdný.

nebo pokud záznamy existovaly, zkuste přidat IGNORE

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

AKTUALIZACE 1

Asi se něco pokazilo. Musíte pouze přidat jedinečné omezení do sloupce ename od eno bude vždy jedinečný kvůli AUTO_INCREMENT .

Chcete-li přidat jedinečné omezení, musíte na stole provést nějaké vyčištění.

Níže uvedené dotazy odstraní některé duplicitní záznamy a změní tabulku přidáním jedinečného omezení do sloupce 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);

Zde je úplná ukázka



  1. volání externího skriptu s mySQL triggerem BEZ sys_exec na ubuntu ARMHF

  2. Existuje způsob, jak se vyhnout řazení souborů, když se pořadí podle liší od klauzule where?

  3. Jak zobrazit kód CREATE VIEW pro zobrazení v PostgreSQL?

  4. Používáte klíčová slova MySQL v dotazu?