sql >> Base de Datos >  >> RDS >> Mysql

Cómo evitar registros duplicados de mi tabla Insertar ignorar no funciona aquí

modifique la tabla agregando UNIQUE restricción

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

pero puede hacer esto si la tabla employee está vacío.

o si existían registros, intente agregar IGNORE

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

ACTUALIZACIÓN 1

Algo salió mal, supongo. Solo necesita agregar una restricción única en la columna ename desde eno siempre será único debido a AUTO_INCREMENT .

Para agregar una restricción única, debe hacer algunas limpiezas en su tabla.

Las consultas a continuación eliminan algunos registros duplicados y modifican la tabla agregando una restricción única en la columna 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);

Aquí hay una demostración completa