2016-03-31 8 views
1

existiert ich eine Tabelle, die wie folgt aussieht:Sqlite: Abrufen von Datensätzen, wobei 1 Spalte mehr als einmal

+---------+--------+ 
| Food | Color | 
+---------+--------+ 
| apple | green | 
| banana | yellow | 
| salad | green | 
| lemon | yellow | 
| coconut | brown | 
+---------+--------+ 

Basierend auf der Color Spalte, würde Ich mag diese Aufzeichnungen holen, wo die Color Spalte mehr existiert als Einmal.

In meinem Beispiel der Datensatz apple, banana, salad und lemon geholt werden sollen, aber nicht coconut (weil die Farbe brown existiert nur einmal).

Aber ich bin mir nicht sicher, was die Select-Anweisung wäre.

Ich dachte über etwas wie SELECT * FROM mytable WHERE COUNT(color) > 1 nach, aber das ist nicht richtig, denke ich.

Antwort

3

Um die Anzahl der Zeilen für jede Farbe zu erhalten, müssen Sie Gruppierung:

SELECT color, 
     COUNT(*) 
FROM MyTable 
GROUP BY color; 

Um nur die Farben mit mehreren Einträgen zu erhalten, müssen Sie sich auf den aggregierten Ergebnissen einen Filter setzen, mit HAVING:

SELECT color, 
     COUNT(*) 
FROM MyTable 
GROUP BY color 
HAVING COUNT(*) > 1; 

Diese Farbwerte können dann die ursprüngliche Tabelle zu filtern, verwendet werden:

SELECT * 
FROM MyTable 
WHERE color IN (SELECT color 
       FROM MyTable 
       GROUP BY color 
       HAVING COUNT(*) > 1); 
Verwandte Themen