Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Seleccionar registros duplicados

Estas en el tema de Seleccionar registros duplicados en el foro de Bases de Datos General en Foros del Web. Hola, tengo el siguiente problema: Me gustaria listar los registros que estan duplicados en mi tabla. Es decir, si la tabla tiene 4 campos, y ...
  #1 (permalink)  
Antiguo 06/05/2009, 05:03
Avatar de AbdelioR  
Fecha de Ingreso: septiembre-2006
Ubicación: Tarragona
Mensajes: 926
Antigüedad: 17 años, 7 meses
Puntos: 8
Pregunta Seleccionar registros duplicados

Hola, tengo el siguiente problema:

Me gustaria listar los registros que estan duplicados en mi tabla. Es decir, si la tabla tiene 4 campos, y hay varios registros que tengan todos los campos igual, seleccionarlos con una consulta.

Ejemplo:

ID - Campo1 - Campo2
1 - A - B
2 - A - C
3 - A - B


Me gustaria que con una consulta, me devolviera los registros 1 y 3 por estar repetidos. ¿Como sería?

Gracias.
  #2 (permalink)  
Antiguo 06/05/2009, 07:48
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 16 años
Puntos: 43
Respuesta: Seleccionar registros duplicados

Prueba algo similar a esto:

SELECT A.Request
FROM requests_forms_items AS A
JOIN (
SELECT t1.Request
FROM requests_forms_items t1
GROUP BY Request
HAVING count(t1.Request)
) AS t2 ON A.Request = t2.Request

Adaptalo a tu tabla y campos.

Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #3 (permalink)  
Antiguo 06/05/2009, 09:24
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Seleccionar registros duplicados

Tema trasladado desde PHP
  #4 (permalink)  
Antiguo 06/05/2009, 12:51
Avatar de Adolfiten  
Fecha de Ingreso: enero-2008
Ubicación: Frente a mi monitor...
Mensajes: 572
Antigüedad: 16 años, 4 meses
Puntos: 7
Respuesta: Seleccionar registros duplicados

Código SENTENCIA SQL:
Ver original
  1. SELECT *
  2. FROM tabla t
  3. WHERE t.campo1 IN (SELECT a.campo1 FROM tabla a WHERE a.campo2 = t.campo2)

¿Funcionará? Adaptalo a tus tablas, probalo y nos contás.

Saludos.
  #5 (permalink)  
Antiguo 06/05/2009, 14:41
Avatar de Gabo77  
Fecha de Ingreso: noviembre-2006
Mensajes: 381
Antigüedad: 17 años, 5 meses
Puntos: 6
Respuesta: Seleccionar registros duplicados

Código:
Select Campo1, Campo2
From TuTabla
Group By Campo1, Campo2
Having Count(1) > 1
y si quieres que aparezca el ID de la tabla

Código:
Select ID, Campo1, Campo2
From TuTabla A
Where Exists(Select 1
        From TuTabla B
        Where A.Campo1 = B.Campo1
                And A.Campo2 = B.Campo2
        Group By Campo1, Campo2
        Having Count(1) > 1)
Creo que así sería, platicanos como te fué
__________________
Hicimos un pacto con Dios... El no desarrolla Sistemas y nosotros no hacemos milagros....
  #6 (permalink)  
Antiguo 08/05/2009, 03:57
Avatar de AbdelioR  
Fecha de Ingreso: septiembre-2006
Ubicación: Tarragona
Mensajes: 926
Antigüedad: 17 años, 7 meses
Puntos: 8
Respuesta: Seleccionar registros duplicados

Gabo77, tu primer código funciona, pero solo muestra el registro una vez, y yo quiero que lo muestre tantas veces como se repita :/

Esto deberia funcionar no?

Código:
SELECT T.carrec, T.tipus
FROM historic_carrecs T
WHERE T.id NOT IN (

  SELECT id FROM (

    SELECT id, carrec, tipus
    FROM historic_carrecs
    GROUP BY carrec, tipus
    HAVING COUNT( 1 ) <=1
    )
)

Última edición por AbdelioR; 08/05/2009 a las 04:31
  #7 (permalink)  
Antiguo 08/05/2009, 08:03
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Seleccionar registros duplicados

Si quieres mostrar todos los registros, puedes probar esto:
Código sql:
Ver original
  1. SELECT tabla.id, tabla.campo1, tabla.campo2 FROM tabla INNER JOIN
  2.    (SELECT campo1, campo2, COUNT(id) cont FROM tabla
  3.    GROUP BY campo1, campo2 HAVING cont > 1)t1
  4.      ON tabla.campo1 = t1.campo1 AND tabla.campo2 = t1.campo2 ORDER BY tabla.id
  #8 (permalink)  
Antiguo 09/05/2009, 05:36
Avatar de AbdelioR  
Fecha de Ingreso: septiembre-2006
Ubicación: Tarragona
Mensajes: 926
Antigüedad: 17 años, 7 meses
Puntos: 8
Respuesta: Seleccionar registros duplicados

Ya se por qué no va -.-, el servidor tiene mysql 4.0.24 y parece que las anidadas funcionan a partir de la 4.1, ya podia yo intentarlo... >_<
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 00:55.