Der SELECT-Befehl ist zwar einer der am häufigsten verwendeten Befehle, um Daten aus einer Tabelle zu lesen, aber er hat einige Schwächen, wenn er allein verwendet wird. Aus diesem Grund werden weitere Befehle mit ihm kombiniert. Diese Kombinationen ermöglichen es, die Ergebnisse zu verfeinern. Dies gilt insbesondere für den Befehl SQL DISTINCT, der doppelte Einträge in einer MySQL-Datenbank entfernt.
Was ist SQL DISTINCT?
Die SQL-Abfrage DISTINCT hilft, doppelte Einträge zu begrenzen. Denn wenn du den Anweisungsbefehl SELECT verwendest, kannst du eine oder mehrere Spalten in der Tabelle auswählen. Innerhalb dieser Spalten kann es aber zu doppelten Zeilen kommen. Um dies zu vermeiden, musst du DISTINCT zur SELECT-Abfrage hinzufügen. Dadurch werden alle Redundanzen beseitigt.
Konkret sieht dieser Befehl wie folgt aus:
- SELECT DISTINCT name_der_spalte
- FROM name_der_tabelle
- Du kannst diesen Befehl auf eine einzelne Spalte oder auf eine Reihe von verbundenen Spalten anwenden.
Gut zu wissen: Wenn du ein Oracle-Datenbankverwaltungssystem verwendest, solltest du nicht den SQL-Befehl DISTINCT, sondern den Befehl UNIQUE verwenden.
3 Beispiele für die Verwendung von SQL DISTINCT
Um dir zu helfen, besser zu verstehen, wie du die SQL-Abfrage DISTINCT verwenden kannst, findest du hier drei konkrete Anwendungsbeispiele.
Die SELECT DISTINCT-Abfrage für eine einzelne Spalte
Dies ist die grundlegende Verwendung der SQL-Abfrage DISTINCT.
In unserem Beispiel hast du eine Tabelle mit allen deinen Kunden, von denen einige zur selben Familie gehören (identischer Nachname).
Hier ist deine Tabelle:
ID | Vorname | Nachname |
---|---|---|
1 | Pierre | Dupont |
2 | Jeanne | Martin |
3 | Henri | Durand |
4 | Bertrand | Petit |
5 | Martine | Dupont |
Wenn du nur die eindeutigen Familien anzeigen möchtest, ist hier die zu verwendende Abfrage: SELECT DISTINCT name FROM customer.
Und hier ist das Ergebnis :
Nachname |
---|
Dupont |
Martin |
Durand |
Petit |
Hier wird der Name Dupont nur einmal angezeigt (gegenüber zweimal in der ersten Tabelle).
Die SELECT DISTINCT-Abfrage für mehrere Spalten
Wie bereits erwähnt, kann der Befehl DISTINCT auch für mehrere Spalten verwendet werden.
Betrachten wir noch einmal ein Beispiel für eine ähnliche Kundentabelle :
ID | Vorname | Nachname |
---|---|---|
1 | Martine | Dupont |
2 | Jeanne | Martin |
3 | Henry | Durand |
4 | Bertrand | Petit |
5 | Martine | Dupont |
6 | Antoine | Martin |
7 | Fabienne | Bernard |
8 | Christelle | Robert |
9 | Henri | Durand |
Wenn du nur die eindeutigen Familien anzeigen möchtest, ist dies die Abfrage, die du verwenden musst: SELECT DISTINCT vorname nachname FROM kunde.
Und hier ist das Ergebnis:
Vorname | Nachname |
---|---|
Martine | Dupon |
Jeanne | Martin |
Henri | Durand |
Bertrand | Petit |
Antoine | Martin |
Fabienne | Bernard |
Christelle | Robert |
In diesem Fall wurden die Zeilen Martine Dupont und Henry Durand eliminiert.
Die Anzahl der einzigartigen Werte
Wenn du wissen willst, wie viele eindeutige Werte dein Array hat, führe einfach die folgende Manipulation aus:
SELECT COUNT(DISTINCT name) AS Zahl FROM Kunde.
Am häufigsten wird die SQL-Abfrage DISTINCT zusammen mit dem Befehl COUNT verwendet, um Werte zu zählen. Es ist aber möglich, je nach deinen Bedürfnissen weitere Aggregationen hinzuzufügen. Dadurch kannst du verschiedene mathematische oder statistische Operationen durchführen, ohne dabei Duplikate zu berücksichtigen.
💡Auch interessant:
Apache Cassandra noSQL BDD |
SQL Joins |
SQL Count Tutorial |
SQL Datei öffnen |
SQL vs. NOSQL |
noSQL nicht relationale Datenbanken |
Alternativen zu SQL DISTINCT
Um doppelte Einträge zu entfernen, kannst du auch andere Befehle verwenden. Insbesondere GROUP BY / ORDER BY.
In diesem Zusammenhang lautet die Abfrage wie folgt:
SELECT name, Prenom FROM `Client` GROUP BY name, Prenom ORDER BY name, Prenom.
Das Ergebnis ist genau das gleiche wie bei der Abfrage: SELECT DISTINCT vorname nachname FROM kunde.
SQL mit DataScientest meistern
Die Programmiersprache SQL ist voll von Abfragen, die für die Manipulation von Daten unerlässlich sind. Wenn du deine Kenntnisse in diesem Bereich vertiefen möchtest, kannst du an unseren Schulungen bei Datascientest teilnehmen. Diese Kurse sind berufsorientiert und ermöglichen es dir, am Ende des Kurses zu 100 % einsatzfähig zu sein.