2017-05-18 5 views
0

Ich habe eine ähnliche Tabelle wie diesenur Tupel wählen, wo immer zweite Spalte denselben Wert

ID | CountryID 
1 | 22 
1 | 22 
2 | 19 
3 | 0 
3 | 14 
3 | 18 
3 | 21 
3 | 22 
3 | 23 
4 | 19 
5 | 9 
5 | 9 
6 | 14 

und ich mag Gruppe von der ersten ID-Spalte hat aber nur Zeilen auswählen, wobei der CountryID den gleichen Wert hat in einer ID. Die resultierende Tabelle sollte wie folgt aussehen:

ID | CountryID 
1 | 22 
2 | 19 
4 | 19 
5 | 9 
6 | 14 

Irgendwelche Ideen?

Antwort

4

Ich denke, die folgende Abfrage funktionieren soll:

SELECT ID, MAX(CountryID) 
FROM Table1 
GROUP BY ID 
HAVING MIN(CountryID) = MAX(CountryID) 
+0

Dies für den Fall fehlschlagen wird, wenn der Wert, der nicht/wiederholt wird wird min max wie (7,13), (7,12), (7,11), (7,12). Wenn ich richtig verstehe, sollte dies auch (7,12) auswählen. –

+0

Ja, obwohl wir Zeile mit '(4,22)' – Susang

+0

@CoderofCode einfügen Das OP sagt 'wo die CountryID hat den gleichen Wert über eine ID ', die ich glaube, widerspricht Ihrem Beispiel. – reaanb

1
SELECT ID, count(distinct CountryID) 
FROM Table1 
GROUP BY ID 
HAVING count(distinct CountryID)=1 
+0

Ihre Abfrage gibt eine Zählung in der zweiten Spalte und nicht eine CountryID zurück, wie vom OP angefordert. – reaanb

+0

ja es ist wahr;) GJ! – Esperento57

Verwandte Themen