sql >> Databasteknik >  >> RDS >> PostgreSQL

Postgres:Distinkt men bara för en kolumn

För att göra en distinkt på endast en (eller n) kolumn(er):

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

Detta kommer att returnera någon av raderna som innehåller namnet. Om du vill styra vilken av raderna som ska returneras måste du beställa:

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

Returnerar första raden vid beställning av kol1.

distinct on :

SELECT DISTINCT ON ( uttryck [, ...] ) behåller endast den första raden i varje rad rader där de givna uttrycken evalueras till lika. DISTINCT ON-uttrycken tolkas med samma regler som för ORDER BY (se ovan). Observera att den "första raden" i varje uppsättning är oförutsägbar om inte ORDER BY används för att säkerställa att den önskade raden visas först.

DISTINCT ON-uttrycken måste matcha ORDER BY-uttrycken längst till vänster. ORDER BY-satsen kommer normalt att innehålla ytterligare uttryck som bestämmer den önskade prioriteringen av rader inom varje DISTINCT ON-grupp.



  1. När prestandan för Distinct och Group By är olika?

  2. Ta bort rader från överordnade och underordnade tabeller

  3. 3 sätt att hitta rader som innehåller versaler i SQLite

  4. Hur man skapar en tabell i designvy i Access 2016