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

Pertahankan urutan yang berbeda di dalam string_agg

Seperti yang Anda ketahui, Anda tidak dapat menggabungkan DISTINCT dan ORDER BY jika Anda tidak memesan dengan ekspresi yang berbeda terlebih dahulu:

  • tidak secara agregat:

  • atau di PILIH:

Namun bisa menggunakan sesuatu seperti

array_to_string(arry_uniq_stable(array_agg(nome ORDER BY tid DESC)), ', ') 

dengan bantuan fungsi arry_uniq_stable yang menghapus duplikat dalam array tanpa mengubah urutannya seperti yang saya berikan contoh untuk di https:// stackoverflow.com/a/42399297/5805552

Harap berhati-hati untuk menggunakan ORDER BY ekspresi yang benar-benar memberi Anda hasil deterministik. Dengan contoh yang Anda berikan, tid saja tidak akan cukup, karena ada nilai duplikat (8) dengan nome yang berbeda .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara mereplikasi pernyataan INSERT/UPDATE/DELETE menggunakan JPA dan Hibernate

  2. Bagaimana saya bisa menggabungkan kolom dari dua tabel menjadi satu output?

  3. rake db:create throws database tidak ada kesalahan dengan postgresql

  4. Menangani PENGECUALIAN dan mengembalikan hasil dari fungsi

  5. Postgres membuat kesalahan ekstensi POSTGIS dengan CentOS 6