sql >> Database teknologi >  >> RDS >> PostgreSQL

Dvale Distinkt med rækkefølge efter

Det giver ikke mening at sortere efter en kolonne, som ikke er en del af den valgte distinct kolonner.

Da du ikke deltager med en samling, vil dine poster alligevel være forskellige (i det mindste PK vil afvige), du kan bare udelade distinkt:

select distinct city 
from City city 
  where city.id is not null 
    and upper(city.name) != upper('Unknown')  
    and city.state.id =:stateId 
order by upper(trim(city.name))

Generelt, når der virkelig er dubletter i resultatsættet, og du vil fjerne dem, kan du opnå det med en underforespørgsel:

select city
from City city
  where city.id in (select c.id from City c join c.someCollection sc where ...)
order by upper(trim(city.name))

Den anden fordel ved denne tilgang er, at den sandsynligvis er bedre præstationsmæssigt, som distinct ing rows er normalt en dyr operation i databasen.



  1. MySQL:FEJL 1215 (HY000):Kan ikke tilføje fremmednøglebegrænsning

  2. Forespørgsel om at forbinde to tabeller

  3. Find ud af, om rækken er blevet opdateret eller indsat

  4. Talformatering i Oracle ved hjælp af TO_CHAR