2016-08-18 2 views
1

Ich muss in meiner Tabelle auf meiner MySQL-Datenbank doppelte Werte mit dem gleichen Namen, aber mit verschiedenen Sport finden. Hier ist ein Beispiel für Daten:So finden Sie Dubletten mit einer Abfrage in MySQL-Datenbank

John Smith Athletics 
Edward Green Athletics 
Edward Green Fencing 
Jim Brown  Rugby 
Jim Brown  Rowing 
Jim Brown  Sailing 
Stan Smith Football 
Stan Smith Football 

Nun, ich möchte eine Abfrage machen, die mir dieses Ergebnis geben:

Edward Green Athletics 
Edward Green Fencing 
Jim Brown  Rugby 
Jim Brown  Rowing 
Jim Brown  Sailing 

Wie gesagt, nur, dass mit dem gleichen Namen Werte aber verschiedene Sportarten, um Namensvetter zu finden.

Antwort

2

Hier ist eine Option exists:

select * 
from yourtable t 
where exists (
    select 1 
    from yourtable t2 
    where t.name = t2.name and t.sport != t2.sport 
    ) 
0

Der innere wählen Sie erhält alle name s mehr als eine unterschiedliche sport aufweist. Um auch die Sportarten für diesen Namen zu erhalten, müssen Sie kommen gegen den gleichen Tisch

select t1.* 
from your_table t1 
join 
(
    select name 
    from your_table 
    group by name 
    having count(distinct sport) > 1 
) t2 on t1.name = t2.name 
+1

Könnten Sie eine Erklärung hinzufügen? –

-1

Ein weiterer posbility ohne suquery wird die Verwendung mit einem Zählerstand:

SELECT * 
FROM yourtable t 
GROUP BY name 
HAVING (COUNT(name) > 1) 
Verwandte Themen