2012-10-02 15 views
24

Duplicar posible:
Mysql Duplicate Rows (Duplicate detected using 2 columns)¿Cómo encontrar filas duplicadas basadas en múltiples campos en MySQL?

En una base de datos MySQL Tengo muchas filas. Por ejemplo:

id | title | time | domain 
32 title1 12:30 domain1.com 
33 title1 12:30 domain2.com 
34 title2 14:20 domain1.com 
35 title3 14:30 domain2.com 
36 title1 12:30 domain55.com 

Cómo soy capaz de seleccionar filas de una base de datos basada en única título y tiempo? Los dominios duplicados o ID no son relevantes, solo los otros dos campos.

Quiero poder recuperar las filas 32, 33 y 36 porque tienen títulos idénticos e idénticas veces.

No quiero tener que poner un título o tiempo, quiero que la consulta devuelva todos los campos donde haya una coincidencia "duplicada" en estos dos campos, ya sean solo dos o 50. De esa manera, puede ir y editar o eliminar algunos de los duplicados.

+0

Podría por favor acepte la respuesta si le gusta? – kasi

Respuesta

28
select distinct id, title, time 
    from table t1 
where exists (select * 
       from table t2 
       where t2.id <> t1.id 
        and t2.title = t1.title 
        and t2.time = t1.time 
       ) 
+3

Esto realmente responde a la pregunta y devuelve las tres filas duplicadas, mientras que la [otra respuesta] (http://stackoverflow.com/a/12691631/283991) solo devuelve una fila. – mwotton

58

Aquí es lo que quiere

SELECT title, time 
    FROM table 
GROUP BY title, time 
    HAVING count(*) > 1 
Cuestiones relacionadas