PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Hibernasi Beda dengan pesanan oleh

Tidak masuk akal untuk memesan dengan kolom yang bukan bagian dari distinct . yang dipilih kolom.

Karena Anda tidak bergabung dengan koleksi, catatan Anda akan tetap berbeda (setidaknya PK akan berbeda), Anda bisa menghilangkan perbedaan:

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

Secara umum, ketika benar-benar ada duplikat dalam kumpulan hasil dan Anda ingin menghilangkannya, Anda dapat mencapainya dengan subquery:

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

Manfaat lain dari pendekatan ini adalah mungkin lebih baik dari segi kinerja, karena distinct ing baris biasanya merupakan operasi yang mahal dalam database.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mempertahankan data menggunakan gambar buruh pelabuhan postgres?

  2. Memilih semua catatan menggunakan SQL LIMIT dan kueri OFFSET

  3. postgresql:nilai kunci duplikat kesalahan melanggar batasan unik

  4. Bagaimana cara menggabungkan bilangan bulat di postgresql?

  5. Mengumumkan Barman 1.0, Manajer Pencadangan dan Pemulihan untuk PostgreSQL