2012-10-02 23 views
24

Powiel możliwe:
Mysql Duplicate Rows (Duplicate detected using 2 columns)Jak znaleźć duplikaty wierszy na podstawie wielu pól w MySQL?

w bazie danych MySQL Mam wiele wierszy. Na przykład:

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 

Jak jestem w stanie wybrać wiersze z bazy danych na podstawie tylko tytułem i czasie? Powielone domeny lub identyfikatory nie stanowią problemu, tylko pozostałe dwa pola.

Chcę mieć możliwość pobierania wierszy 32, 33 i 36, ponieważ mają one identyczne tytuły i identyczne czasy.

Nie chcę wstawiać tytułu lub godziny, chcę, aby zapytanie zwróciło wszystkie pola, w których występuje "zduplikowane" dopasowanie znalezione w tych dwóch polach, czy to tylko dwa, czy 50. W ten sposób może przeglądać i edytować lub usuwać niektóre z duplikatów.

+0

mógłbyś zaakceptować odpowiedź, jeśli ci się podoba? – kasi

Odpowiedz

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

To faktycznie odpowiada na pytanie, zwracając wszystkie trzy zduplikowane wiersze, podczas gdy [inna odpowiedź] (http://stackoverflow.com/a/12691631/283991) zwraca tylko jeden wiersz. – mwotton

58

Oto co chcesz

SELECT title, time 
    FROM table 
GROUP BY title, time 
    HAVING count(*) > 1 
Powiązane problemy