PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Hibernate Distinct z zamówieniem według

Nie ma sensu porządkowanie według kolumny, która nie jest częścią wybranego distinct kolumny.

Ponieważ nie łączysz się z kolekcją, twoje rekordy i tak będą różne (przynajmniej PK będzie się różnić), możesz po prostu pominąć odrębne:

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))

Ogólnie rzecz biorąc, jeśli w zestawie wyników rzeczywiście znajdują się duplikaty i chcesz je wyeliminować, możesz to osiągnąć za pomocą podzapytania:

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))

Inną zaletą tego podejścia jest to, że prawdopodobnie jest ono lepsze pod względem wydajności, ponieważ distinct łączenie wierszy jest zwykle kosztowną operacją w bazie danych.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgresql generuje_serie miesięcy

  2. Zmienna globalna oparta na sesji w procedurze składowanej Postgresql?

  3. PostgreSql :tablica Json do wierszy przy użyciu łączenia bocznego

  4. STWÓRZ JĘZYK plpython3u – PostgreSQL 9.6

  5. Czy istnieje sposób na przydatne indeksowanie kolumny tekstowej zawierającej wzorce wyrażeń regularnych?