Database
 sql >> Datenbank >  >> RDS >> Database

So beseitigen Sie doppelte Zeilen in SQL

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 in dieser Ergebnismenge nur einmal vorkommt, obwohl es in der ursprünglichen Tabelle zweimal vorkommt. Dies liegt daran, dass wir angegeben haben, dass wir nur die Zeilen auswählen möchten, für die die Kombination aus Name und Farbe eindeutig ist.

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.