JASoft.org

El blog de José Manuel Alarcón Aguín. Programación web y mucho más...

MENÚ - JASoft: JM Alarcón

Cómo detectar registros duplicados en una base de datos

CopiaEsta es una consulta muy sencilla pero que a muchos principiantes les resulta de mucha utilidad, así que como hoy he tenido que usarla y me he acordado, la pongo aquí por si a alguien le viene bien.

El problema es el habitual: tenemos una tabla con muchos registros y queremos saber si alguno de ellos está duplicado. Lo más común no es que nos interese realmente saber qué registros están duplicados, sino qué registros tienen dos o tres campos iguales.

Por ejemplo, si tenemos una lista de clientes quizá no nos interesa saber quiénes están duplicados buscándolos por el nombre (ya que éste puede haber sido escrito diferente: con o sin tilde, con abreviatura o no), por lo que resultaría más interesante averiguar aquellos registros que tienen el teléfono y el email duplicados por ejemplo.

La consulta es muy fácil, y usa una función de agrupamiento para determinarlo. La consulta genérica sería esta:

   1: SELECT COUNT(*), CAMPO_A, CAMPO_B
   2: FROM TABLA
   3: GROUP BY CAMPO_A, CAMPO_B
   4: HAVING COUNT(*)>1;

Así pues, para el ejemplo de los clientes duplicados escribiríamos algo como esto:

   1: SELECT Telefono, EMail, COUNT(*)
   2: FROM Clientes
   3: GROUP BY Telefono, EMail
   4: HAVING COUNT(*)>1;

Y nos devolvería una lista de los clientes cuyo email y teléfono coinciden exactamente, y cuántas veces (para saber cuántas veces los tenemos repetidos).

A partir de aquí ya es más o menos fácil (según la estructura de nuestra tabla y el número de campos involucrados) sacar un listado completo usando lo anterior en sub-consultas.

Este tipo de consulta funcionará sin problemas en cualquier gestor de bases de datos relacionales (SQL Server, MySQL, Oracle,... incluso Access)

Sencillo pero útil.

¡Espero que te sirva de ayuda!

José Manuel Alarcón José Manuel Alarcón
Fundador de campusMVP.es, el proyecto de referencia en formación on-line para programadores en lengua española. Autor de varios libros y cientos de artículos. Galardonado como MVP de Microsoft desde 2004. Gallego de Vigo, amante de la ciencia y la tecnología, la música y la lectura. Ayudando a la gente en Internet desde 1996.
Descarga GRATIS mi último libro (no técnico): "Tres Monos, Diez Minutos".
Banner

Comentarios (4) -

Spain Pedro Hurtado

Hola Jose Manuel.
Sencilla pero util y eso es lo importante, no te puedes imaginar como cosas como estás vendrían de bien en los foros de msdn, muy bien por este tipo de iniciativas.

Responder

Colombia Juan Carlos

Gracias un buen aporte de conocimiento.

Responder

Miguel Rodriguez

Muy útil esta consulta, ágil y escalable. Gracias por exponer los conocimientos.

Responder

Buena consulta y como seleccionar los registros que tienen el mismo nombre del cliente pero con diferente numero de teléfono?

Responder

Agregar comentario