0Pricing
SQL Academy · Lektion

Grundlagen von SELECT DISTINCT

Nur eindeutige Zeilen zurückgeben

Grundlagen von SELECT DISTINCT ist eine kostenlose SQL Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des SQL Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

Warum Duplikate entstehen

Tabellen enthalten häufig wiederholte Werte. Eine Tabelle customers kann beispielsweise in Tausenden von Zeilen dieselbe city enthalten. Wenn Sie sich nur für die Menge unterschiedlicher Werte interessieren, gibt ein einfaches SELECT jede Zeile einschließlich der Wiederholungen zurück.

SELECT DISTINCT fasst identische Zeilen zu einer einzigen zusammen. In dieser Lektion lernen Sie die Grundlagen, nur eindeutige Ergebnisse zurückzugeben.

SELECT city FROM customers;
-- Returns one row per customer, with many repeated cities

Das Schlüsselwort DISTINCT

DISTINCT steht direkt nach SELECT. Es entfernt doppelte Zeilen aus der Ergebnismenge und behält von jeder eindeutigen Kombination der ausgewählten Spalten nur eine Kopie.

SELECT DISTINCT city
FROM customers;
-- One row per unique city

DISTINCT gilt für die gesamte Zeile

Eine verbreitete Fehlannahme ist, dass DISTINCT nur für eine einzelne Spalte gilt. Tatsächlich gilt es für die gesamte ausgewählte Zeile. Jede aufgelistete Spalte wird bei der Entscheidung berücksichtigt, ob zwei Zeilen Duplikate sind.

Im folgenden Beispiel werden die Zeilen nur anhand des Werts von city dedupliziert, da dies die einzige ausgewählte Spalte ist.

SELECT DISTINCT country
FROM customers;
-- Unique countries across all customers

Beispieldaten

Stellen Sie sich eine kleine Tabelle orders vor. Beachten Sie die wiederholten Werte in status und country. Wir verwenden diese Struktur in der gesamten Lektion.

  • id=1, status='paid', country='US'
  • id=2, status='paid', country='US'
  • id=3, status='shipped', country='DE'
  • id=4, status='paid', country='DE'
CREATE TABLE orders (
  id         int PRIMARY KEY,
  status     text,
  country    text,
  amount     numeric(10,2)
);

Eine einzelne Spalte mit DISTINCT

Wenn Sie DISTINCT status aus den Beispieldaten auswählen, erhalten Sie die eindeutigen Statuswerte: paid und shipped. Aus den vier Zeilen werden zwei.

SELECT DISTINCT status
FROM orders;
-- paid
-- shipped

NULL wird als ein Wert behandelt

Obwohl NULL normalerweise mit nichts gleich ist, nicht einmal mit sich selbst, behandelt DISTINCT alle NULL-Werte als eine einzige Gruppe. Enthält eine Spalte viele NULL-Zeilen, erhalten Sie im Ergebnis von DISTINCT genau ein NULL.

SELECT DISTINCT shipped_at
FROM orders;
-- All NULL shipped_at rows collapse into a single NULL row

DISTINCT mit ORDER BY

In der Regel möchten Sie die eindeutigen Werte sortiert erhalten. DISTINCT wird zuerst ausgeführt, um die eindeutige Menge zu bilden; anschließend sortiert ORDER BY sie. Jede Spalte in ORDER BY muss bei Verwendung von DISTINCT ebenfalls in der SELECT-Liste vorkommen.

SELECT DISTINCT country
FROM orders
ORDER BY country;
-- DE
-- US

DISTINCT und GROUP BY im Vergleich

SELECT DISTINCT col und SELECT col GROUP BY col liefern dieselben eindeutigen Zeilen. Verwenden Sie DISTINCT, wenn Sie nur eindeutige Werte benötigen. Verwenden Sie GROUP BY, wenn Sie zusätzlich Aggregatfunktionen wie COUNT pro Gruppe benötigen.

-- These two return the same set of countries:
SELECT DISTINCT country FROM orders;

SELECT country FROM orders
GROUP BY country;

DISTINCT verursacht zusätzlichen Aufwand

Das Entfernen von Duplikaten ist nicht kostenlos. Die Datenbank muss alle möglichen Zeilen sortieren oder hashen, um die eindeutigen Zeilen zu ermitteln. Bei großen Tabellen verursacht das zusätzlichen CPU- und Speicheraufwand. Fordern Sie DISTINCT daher nur an, wenn Sie tatsächlich eindeutige Ergebnisse benötigen.

-- Avoid blind DISTINCT on every query.
-- If the column is already unique (e.g. a PRIMARY KEY),
-- DISTINCT does nothing useful but still costs work:
SELECT DISTINCT id FROM orders;  -- id is already unique

DISTINCT in Ausdrücken

Sie können DISTINCT auf einen berechneten Ausdruck und nicht nur auf eine unveränderte Spalte anwenden. Die Datenbank wertet den Ausdruck für jede Zeile aus und dedupliziert anschließend die Ergebnisse.

SELECT DISTINCT upper(country) AS country_code
FROM orders
ORDER BY country_code;
-- DE
-- US

Eine Auswahlliste erstellen

Eine praktische Anwendung von DISTINCT ist das Befüllen eines Dropdown-Menüs oder einer Filterliste in einer Anwendung: Rufen Sie die eindeutigen Statuswerte ab, um der Benutzerin oder dem Benutzer jede derzeit in den Daten vorhandene Option anzuzeigen.

SELECT DISTINCT status
FROM orders
ORDER BY status;
-- paid
-- shipped

Kurzer Test

Wo gehört das Schlüsselwort DISTINCT hin, und was wird dadurch dedupliziert?

Zusammenfassung

Sie haben die Grundlagen von SELECT DISTINCT gelernt:

  • Es entfernt doppelte Zeilen aus der Ergebnismenge.
  • Es gilt für die gesamte ausgewählte Zeile, nicht nur für eine Spalte.
  • Alle NULL-Werte werden zu einem einzigen Wert zusammengefasst.
  • ORDER BY wird nach der Deduplizierung ausgeführt; die entsprechenden Spalten müssen ausgewählt werden.
  • Es verursacht zusätzlichen Aufwand. Verwenden Sie es daher nur bei Bedarf.

Als Nächstes: DISTINCT auf mehrere Spalten erweitern.

SELECT DISTINCT status
FROM orders
ORDER BY status;

Häufig gestellte Fragen

Ist die Lektion „Grundlagen von SELECT DISTINCT“ kostenlos?

Ja — der vollständige Text von „Grundlagen von SELECT DISTINCT“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des SQL Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Grundlagen von SELECT DISTINCT“?

Nur eindeutige Zeilen zurückgeben Du übst SQL Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um SQL Academy zu starten?

Keine Vorkenntnisse erforderlich. SQL Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „Grundlagen von SELECT DISTINCT“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser SQL Academy-Lektion Code schreiben und ausführen?

Ja. Jede SQL Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Grundlagen von SELECT DISTINCT
  2. DISTINCT für mehrere Spalten
  3. PostgreSQL DISTINCT ON
  4. Eindeutige Werte zählen
← Zurück zu SQL Academy