Sidebar

A menudo necesitamos conocer los registros duplicados de una tabla. Más especificamente, necesitamos los registros que han duplicado la llave primaria. Claro que asumimos que esto ocurrio debido a que no existia en ese momento la llave primaria. Esta es la manera de extraer los registros completos.

Podemos encontrar los registros duplicados de una tabla haciendo uso de una tabla derivada, para posteriormente unirla mediante un join a la tabla original para obtener el registro completo.

SELECT T.*
FROM
MyTable AS T
JOIN
(
SELECT
keycol1,
keycol2
FROM
MyTable
GROUP BY
keycol1,
keycol2
HAVING
COUNT (*) > 1
) AS D ON D.keycol1 = T.keycol1 AND D.keycol2 = T.keycol2

En este ejemplo solo coloca dos columnas que conforman la llave, pero puede ser adaptada para cualquier tipo de llave primaria. La tabla derivada nos da solo los registros donde la llave es mayor a 1, en otras palabras los duplicados. Posteriormente se esta tabla es unida mediante un join a la tabla original para extraer los registros.


Search

Tips BD