Hola que tal, en esta oportunidad
voy a mostrarle un tip interesante para encontrar registros duplicados con 1,
2, 3, etc. campos iguales.
Bueno partamos del escenario
siguiente tengo una tabla cliente y registro los clientes de acuerdo a la
siguiente estructura:
CLIENTE
|
Código (PK)
|
nombre
|
dni
|
email
|
Como mi campo código es la llave
primaria (PK) de la tabla cliente y por lo tanto no aceptará duplicados, ya que
al ingresar un código duplicado mostrara un mensaje de violación de la llave
primaria.
Pero qué pasa si registro 2, 3,
4, 5, N clientes con el mismo DNI (me ha pasado alguna vez en algunas empresas
donde existen base de datos que tienen tablas que permiten registrar este
escenario y que quizá a los programadores se les paso hacer alguna validación
extra para evitar ingresar clientes con el mismo DNI o RUC), bueno entonces
podemos usar la siguiente instrucción
SQL para detectar aquellos clientes que tienen el mismo DNI:
SELECT dni, COUNT(*) as duplicados
FROM CLIENTE
GROUP BY dni
HAVING COUNT(*) > 1
Mostrandonos como resultado:
Entonces concluyendo podemos decir que si queremos comparar
varios campos esta sería la consulta general:
SELECT CAMPO_1, CAMPO2_, CAMPO_3, ..., CAMPO_N, COUNT(*)
FROM TABLA
GROUP BY CAMPO_1, CAMPO2_, CAMPO_3, ..., CAMPO_N
HAVING COUNT(*) > 1
Espero les sirva de utilidad, les dejo el codigo de ejemplo
para que lo prueben en sus pc’s:
CREATE TABLE CLIENTE
(
codigo char(6) PRIMARY KEY,
nombre varchar(50) NULL,
dni char(8) NULL,
email varchar(50) NULL,
)
GO
INSERT INTO CLIENTE VALUES('000001', 'LUIS FERNANDEZ', '12345678', 'user@hotmail.com')
INSERT INTO CLIENTE VALUES('000002', 'DANIEL CONTRERAS', '11223344', 'user2@hotmail.com')
INSERT INTO CLIENTE VALUES('000003', 'MARIA GONZALES', '12345678', 'user3@hotmail.com')
INSERT INTO CLIENTE VALUES('000004', 'VICTORIA RENGIFO', '12312312', 'user4@hotmail.com')
PD: El código debería funcionar para oracle, mysql, sql
server, postgresql.
Ing. Héctor Calla, egresado de la UNMSM, actualmente
llevando una maestría en Ingeniería de Software en la PUCP y dedicado al
desarrollo de sistemas comerciales usando Power Builder, C#, con base de datos
SQL Server, Postgresql, MySQL.
No hay comentarios:
Publicar un comentario