2012-10-02 15 views
24

Eventuali duplicati:
Mysql Duplicate Rows (Duplicate detected using 2 columns)Come trovare le righe duplicate basate su più campi in MySQL?

in un database MySQL Ho molte righe. Per esempio:

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 

Come io sono in grado di selezionare le righe da un data base a solo titolo e tempo? I domini duplicati o gli ID non sono preoccupanti, solo gli altri due campi.

Desidero poter recuperare le righe 32, 33 e 36 perché hanno titoli identici e tempi identici.

Non voglio inserire un titolo o un'ora, desidero che la query restituisca tutti i campi in cui è presente una corrispondenza "duplicata" in questi due campi, sia che siano solo due o 50. In questo modo può passare e modificare o eliminare alcuni dei duplicati.

+0

la prego di accettare la risposta se ti piace? – kasi

risposta

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

Questo in realtà risponde alla domanda, restituendo tutte e tre le righe duplicate, mentre l'altra risposta (http://stackoverflow.com/a/12691631/283991) restituisce solo una riga. – mwotton

58

Ecco ciò che si vuole

SELECT title, time 
    FROM table 
GROUP BY title, time 
    HAVING count(*) > 1 
Problemi correlati