Zusammenfassung: In diesem Tutorial lernen Sie, wie Sie die PostgreSQL SELECT DISTINCT
-Klausel verwenden, um doppelte Zeilen aus einer von einer Abfrage zurückgegebenen Ergebnismenge zu entfernen.
Einführung in PostgreSQL SELECT DISTINCT Klausel
Die DISTINCT
Klausel wird in der SELECT
Anweisung verwendet, um doppelte Zeilen aus einer Ergebnismenge zu entfernen. Die DISTINCT
-Klausel behält eine Zeile für jede Gruppe von Duplikaten. Die DISTINCT
Klausel kann auf eine oder mehrere Spalten in der Auswahlliste der SELECT
-Anweisung angewendet werden.
Das Folgende illustriert die Syntax der DISTINCT
-Klausel:
Code language: SQL (Structured Query Language) (sql)SELECT DISTINCT column1FROM table_name;
In dieser Anweisung werden die Werte in der column1
-Spalte verwendet, um das Duplikat auszuwerten.
Wenn Sie mehrere Spalten angeben, wertet die DISTINCT
-Klausel das Duplikat auf Basis der Kombination der Werte dieser Spalten aus.
Code language: SQL (Structured Query Language) (sql)SELECT DISTINCT column1, column2FROM table_name;
In diesem Fall wird die Kombination der Werte in den beiden Spalten column1
und column2
für die Auswertung des Duplikats verwendet.
PostgreSQL bietet auch das DISTINCT ON (expression)
an, um die „erste“ Zeile jeder Gruppe von Duplikaten mit der folgenden Syntax zu behalten:
Die Reihenfolge der Zeilen, die von der SELECT
-Anweisung zurückgegeben werden, ist nicht spezifiziert, daher ist auch die „erste“ Zeile jeder Gruppe des Duplikats nicht spezifiziert.
Es ist eine gute Praxis, immer die ORDER BY
-Klausel mit der DISTINCT ON(expression)
-Anweisung zu verwenden, um die Ergebnismenge vorhersehbar zu machen.
Beachten Sie, dass der DISTINCT ON
-Ausdruck mit dem ganz linken Ausdruck in der ORDER BY
-Klausel übereinstimmen muss.
PostgreSQL SELECT DISTINCT Beispiele
Lassen Sie uns eine neue Tabelle mit dem Namen distinct_demo
erstellen und Daten in diese einfügen, um die DISTINCT
-Klausel zu üben.
Hinweis: Wie Sie eine Tabelle erstellen und Daten in eine Tabelle einfügen, erfahren Sie im folgenden Tutorial. In diesem Tutorial führen Sie die Anweisungen einfach in psql oder pgAdmin aus.
Zunächst erstellen Sie mit der folgenden CREATE TABLE
-Anweisung die distinct_demo
-Tabelle, die aus drei Spalten besteht: id
bcolor
und fcolor
.
Code language: SQL (Structured Query Language) (sql)CREATE TABLE distinct_demo (id serial NOT NULL PRIMARY KEY,bcolor VARCHAR,fcolor VARCHAR);
Zweitens fügen Sie mit der folgenden INSERT
-Anweisung einige Zeilen in die Tabelle distinct_demo
ein:
Drittes, Abfrage der Daten aus der Tabelle distinct_demo
mit der Anweisung SELECT
:
Code language: SQL (Structured Query Language) (sql)SELECTid,bcolor,fcolorFROMdistinct_demo ;
PostgreSQL DISTINCT one column example
Die folgende Anweisung selektiert eindeutige Werte in der Spalte bcolor
aus der Tabelle t1
aus und sortiert die Ergebnismenge in alphabetischer Reihenfolge unter Verwendung der Klausel ORDER BY
.
Code language: SQL (Structured Query Language) (sql)SELECTDISTINCT bcolorFROMdistinct_demoORDER BYbcolor;
PostgreSQL DISTINCT mehrere Spalten
Die folgende Anweisung demonstriert, wie Sie die DISTINCT
-Klausel auf mehrere Spalten anwenden:
Code language: SQL (Structured Query Language) (sql)SELECTDISTINCT bcolor,fcolorFROMdistinct_demoORDER BYbcolor,fcolor;
Weil wir in der SELECT DISTINCT
-Klausel sowohl bcolor
als auch fcolor
Spalten angegeben haben, PostgreSQL kombiniert die Werte in den beiden Spalten bcolor
und fcolor
, um die Eindeutigkeit der Zeilen zu bewerten.
Die Abfrage gibt die eindeutige Kombination von bcolor
und fcolor
aus der Tabelle distinct_demo
zurück. Beachten Sie, dass die Tabelle distinct_demo
zwei Zeilen mit dem red
-Wert in den beiden Spalten bcolor
und fcolor
hat. Als wir das DISTINCT
auf beide Spalten angewendet haben, wurde eine Zeile aus der Ergebnismenge entfernt, weil es sich um ein Duplikat handelt.
PostgreSQL DISTINCT ON Beispiel
Die folgende Anweisung sortiert die Ergebnismenge nach bcolor
und fcolor
, und behält dann für jede Gruppe von Duplikaten die erste Zeile in der zurückgegebenen Ergebnismenge.
Code language: SQL (Structured Query Language) (sql)SELECTDISTINCT ON (bcolor) bcolor,fcolorFROMdistinct_demo ORDER BYbcolor,fcolor;
Hier ist die Ausgabe:
In diesem Tutorial haben Sie gelernt, wie man die PostgreSQL SELECT DISTINCT
-Anweisung verwendet, um doppelte Zeilen zu entfernen, die von einer Abfrage zurückgegeben werden.
- War dieses Tutorial hilfreich?
- JaNein