2017-05-04 2 views
1

Ich habe einige Probleme mit einer SQL-Abfrage doppelte Einträge zu finden:SQL-Abfrage finden zweispaltige

Mytable

id(int), eid(int), date(date), pid(int) 

einige Einsätze:

1, 10, '2017-05-04', 1 
2, 20, '2017-05-04', 1 
3, 10, '2017-05-04', 5 

ich für doppelte Einträge finden möchten eid zu einem Datum Ergebnis:

1, 10, '2017-05-04', 1 
3, 10, '2017-05-04', 5 

Meine erste Idee war mit GROUP BY und HAVING, aber es funktioniert nicht.

SELECT id, eid, date, pid, COUNT(pid) AS NumOccurrences 
FROM `mytable` 
HAVING (COUNT(pid) > 1) 

Sie haben meinen Tag gemacht, wenn Sie versuchen, mir zu helfen, danke im fortgeschrittenen Stadium!

Antwort

2

exists()

select * 
from mytable t 
where exists (
    select 1 
    from mytable i 
    where t.eid = i.eid 
    and t.date = i.date 
    and t.id <> i.id 
    ) 

inner join Version verwenden, wenn Sie zusätzliche Zeilen bekommen kann je nachdem, wie viele Duplikate Sie für jedes Paar haben. Wenn ja, könnten Sie distinct hinzufügen.

select t.* 
from mytable t 
    inner join mytable i 
    on t.eid = i.eid 
    and t.date = i.date 
    and t.id <> i.id 
+0

perfekt! Danke für deine schnelle Aktion! – Korty

+0

@Korty Glücklich zu helfen! – SqlZim

+0

existiert() war die richtige Lösung – Korty

0

Sie diese Lösung versuchen sollte: SELECT DISTINCT id, eid, date, pid, COUNT(pid) AS NumOccurrences FROM mytable

Verwandte Themen