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.