Problem:
Sie möchten alle doppelten Zeilen aus der Ergebnismenge einer Abfrage entfernen, sodass jede Zeile nur einmal erscheint.
Beispiel:
Unsere Datenbank hat eine Tabelle namens clothes
mit Daten in den folgenden Spalten:id
, name
, color
und year_produced
.
id | Name | Farbe | year_produced |
---|---|---|---|
1 | T-Shirt | gelb | 2015 |
2 | Jacke | blau | 2016 |
3 | Jeans | schwarz | 2015 |
4 | Jacke | blau | 2015 |
5 | Jacke | grün | 2016 |
6 | Jacke | gelb | 2017 |
7 | Hut | gelb | 2017 |
Lassen Sie uns die nicht wiederholten Namen und Farben von Kleidungsstücken abrufen, die vor 2017 hergestellt wurden.
Lösung:
SELECT DISTINCT name, color FROM clothes WHERE year_produced < 2017;
Hier ist das Ergebnis:
name | Farbe |
---|---|
T-Shirt | gelb |
Jacke | blau |
Jeans | schwarz |
Jacke | grün |
Beachten Sie, dass das blaue
Diskussion:
Verwenden Sie einfach den DISTINCT
Stichwort nach SELECT
wenn Sie nur nicht wiederholte Zeilen auswählen möchten. Dieses Schlüsselwort zwingt die Abfrage, alle doppelten Zeilen zu verwerfen, basierend nur auf den von Ihnen aufgelisteten Spalten.
Hier ist ein Beispiel für die Auswahl nur der Zeilen, für die der Name des Elements eindeutig ist:
SELECT DISTINCT name FROM clothes WHERE year_produced < 2017;
Im Gegensatz zur vorherigen Abfrage gibt diese nur drei Datensätze zurück:
name | |
---|---|
T-Shirt | |
Jeans | |
Während es in der ursprünglichen Tabelle vier Jeans gibt (zwei blaue, eine grüne und eine gelbe), erscheint das Element in dieser Ergebnismenge dank DISTINCT
nur einmal Schlüsselwort.