Mit SQL SELECT DISTINCT stellst du sicher, dass du bei deinen Da­ten­ab­fra­gen nur ein­deu­ti­ge Da­ten­sät­ze und Zeilen erhältst. SELECT DISTINCT filtert Duplikate aus den gewählten Er­geb­nis­sen und ver­bes­sert so die Präzision sowie Übersicht deiner Da­ten­ana­ly­se.

Was ist SQL SELECT DISTINCT?

SELECT DISTINCT ist ein SQL-Operator, der zusammen mit dem Befehl SQL SELECT genutzt wird. Während SELECT eine oder mehrere Spalten und Da­ten­sät­ze auswählt, sorgt die Ergänzung durch DISTINCT dafür, dass im Ergebnis nur von­ein­an­der un­ter­scheid­ba­re Zeilen auf­tau­chen. Doppelte Werte werden dabei au­to­ma­tisch aus­sor­tiert. Wenn du SELECT DISTINCT mit weiteren SQL-Ope­ra­to­ren und SQL-Befehlen kom­bi­nierst, passt du deine Abfragen exakt an deine Be­dürf­nis­se an.

Un­ter­schied zwischen SQL SELECT DISTINCT und SELECT UNIQUE

Obwohl UNIQUE (ein­zig­ar­tig) und DISTINCT (un­ter­scheid­bar) sprach­lich ähnlich klingen, haben sie in der Da­ten­bank­welt ver­schie­de­ne Aufgaben. Für die richtige Anwendung von SQL SELECT DISTINCT ist die Un­ter­schei­dung wichtig:

SQL SELECT DISTINCT SQL SELECT UNIQUE
Prüft ganze Da­ten­sät­ze auf Red­un­dan­zen, entfernt Duplikate und liefert aus­schließ­lich ein­deu­ti­ge Er­geb­nis­zei­len. Wird als Cons­traint genutzt, um bereits beim Erstellen oder Ändern von Tabellen das Speichern doppelter Werte in Spalten zu ver­hin­dern.
Wird primär für die Analyse, Aus­wer­tung und den Vergleich be­stehen­der Daten genutzt, um klare Er­geb­nis­se zu erhalten. Dient der Da­ten­in­te­gri­tät direkt in der Ta­bel­len­struk­tur, damit Red­un­dan­zen gar nicht erst entstehen.
Tipp

Du möchtest direkt mit der Da­ten­bank­ar­beit loslegen? Unsere SQL-Ein­füh­rung mit Bei­spie­len zeigt dir die wich­tigs­ten Grund­la­gen und Funk­tio­nen der Sprache SQL.

Die Syntax von SELECT DISTINCT erklärt

So sieht die grund­le­gen­de SELECT DISTINCT-Syntax aus:

SELECT  DISTINCT  SpalteA, SpalteB, …
FROM tabelle
sql

Diese Parameter werden verwendet:

  • SELECT DISTINCT: Der Befehl SELECT wählt zusammen mit dem Operator DISTINCT die Spalten aus, aus denen Duplikate im Ergebnis entfernt werden sollen.
  • FROM: Bestimmt die Tabelle, die nach doppelten Einträgen durch­sucht wird.
  • WHERE: Mit dieser op­tio­na­len SQL WHERE-Klausel kannst du die Abfrage durch Be­din­gun­gen auf relevante Werte ein­schrän­ken.

Typische Ein­satz­ge­bie­te für SELECT DISTINCT

Die Mög­lich­kei­ten für Abfragen mit SQL SELECT DISTINCT sind viel­fäl­tig. Du kannst damit bei­spiels­wei­se:

  • Kunden-, Produkt- oder Be­stell­da­ten, die mehrfach vorkommen, auf jeweils einen klaren Eintrag re­du­zie­ren.
  • Die Anzahl ver­kauf­ter Produkte anhand von IDs eindeutig iden­ti­fi­zie­ren.
  • Saubere Listen von Kund­schaft oder Patient:innen abrufen.
  • Alle Lie­fe­ran­ten oder Adressen innerhalb einer be­stimm­ten Region gesammelt anzeigen.

Prak­ti­sche Beispiele für SQL SELECT DISTINCT

Damit du siehst, wie SQL SELECT DISTINCT in der Praxis glatt läuft, haben wir zwei einfache Beispiele vor­be­rei­tet.

Alle Kund:innen abrufen

Du möchtest aus der Tabelle „Be­stel­lun­gen“ eine Liste aller Kund:innen ziehen, ohne dass Personen mit mehreren Be­stel­lun­gen doppelt er­schei­nen. So gehst du vor:

SELECT  DISTINCT  Kundenname
FROM  Bestellungen
sql

Kund­schaft nach Region filtern

Mit der WHERE-Klausel ver­fei­nerst du deine Analyse durch gezielte Be­din­gun­gen. Wenn du etwa alle Kun­den­na­men aus der Tabelle „Be­stel­lun­gen“ suchst, die ihren Sitz in Deutsch­land haben, nutzt du diesen Befehl:

SELECT  DISTINCT  Kundennamen, Land
FROM  Bestellungen
WHERE  Land  =  'Deutschland'
sql

Al­ter­na­ti­ven zu SQL SELECT DISTINCT

Auch wenn SELECT DISTINCT sehr nützlich ist, ist es nicht immer die ef­fi­zi­en­tes­te Wahl. Da der Operator bei riesigen Da­ten­men­gen jede Zeile ver­gleicht und Res­sour­cen be­an­sprucht, gibt es sinnvolle Al­ter­na­ti­ven:

  • GROUP BY: Mit SQL GROUP BY fasst du Da­ten­sät­ze zusammen und kannst sie mit weiteren Funk­tio­nen prä­zi­sie­ren.
  • EXISTS: SQL EXISTS prüft effizient, ob bestimmte Werte in einer anderen Tabelle exis­tie­ren.
  • COUNT: Kom­bi­nie­re DISTINCT mit SQL COUNT, um die Anzahl ein­deu­ti­ger Werte in einer Spalte direkt zu ermitteln.
  • SELECT + FROM + WHERE: Nutze eine Subquery (ver­schach­tel­te Abfrage), um Er­geb­nis­se ein­zu­gren­zen. Wähle mit SELECT die Spalte, definiere mit FROM die Quelle und lege mit WHERE die ge­wünsch­ten Filter fest.
Zum Hauptmenü