PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Postgres:Eindeutig, aber nur für eine Spalte

Um nur eine (oder n) Spalte(n) zu unterscheiden:

select distinct on (name)
    name, col1, col2
from names

Dadurch werden alle Zeilen zurückgegeben, die den Namen enthalten. Wenn Sie steuern möchten, welche der Zeilen zurückgegeben werden, müssen Sie Folgendes bestellen:

select distinct on (name)
    name, col1, col2
from names
order by name, col1

Gibt die erste Zeile zurück, wenn sie nach col1 geordnet ist.

distinct on :

SELECT DISTINCT ON ( expression [, ...] ) behält nur die erste Zeile jedes Satzes von Zeilen bei, in denen die angegebenen Ausdrücke als gleich ausgewertet werden. Die DISTINCT ON-Ausdrücke werden nach denselben Regeln interpretiert wie für ORDER BY (siehe oben). Beachten Sie, dass die „erste Zeile“ jedes Satzes unvorhersehbar ist, es sei denn, ORDER BY wird verwendet, um sicherzustellen, dass die gewünschte Zeile zuerst erscheint.

Die DISTINCT ON-Ausdrücke müssen mit den ORDER BY-Ausdrücken ganz links übereinstimmen. Die ORDER BY-Klausel enthält normalerweise zusätzliche Ausdrücke, die den gewünschten Vorrang von Zeilen innerhalb jeder DISTINCT ON-Gruppe bestimmen.