Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como evitar registros duplicados da minha tabela Inserir ignorar não funciona aqui


altere a tabela adicionando UNIQUE limitação
ALTER TABLE employee ADD CONSTRAINT emp_unique UNIQUE (ename,dno,mgr,sal)

mas você pode fazer isso se a tabela employee está vazia.

ou se existirem registros, tente adicionar IGNORE
ALTER IGNORE TABLE employee ADD CONSTRAINT emp_unique UNIQUE (ename,dno,mgr,sal)

ATUALIZAÇÃO 1

Algo deu errado, eu acho. Você só precisa adicionar uma restrição exclusiva na coluna ename desde eno sempre será exclusivo devido a AUTO_INCREMENT .

Para adicionar uma restrição exclusiva, você precisa fazer algumas limpezas em sua tabela.

As consultas abaixo excluem alguns registros duplicados e alteram a tabela adicionando uma restrição exclusiva na coluna 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);

Aqui está uma demonstração completa