PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Duy trì thứ tự của string_agg riêng biệt bên trong

Như bạn đã phát hiện ra, bạn không thể kết hợp DISTINCTORDER BY nếu bạn không sắp xếp theo biểu thức riêng biệt trước:

  • không tổng hợp:

  • cũng không phải trong SELECT:

Tuy nhiên, có thể sử dụng một cái gì đó như

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

với sự trợ giúp của hàm arry_uniq_stable loại bỏ các bản sao trong một mảng mà thay đổi thứ tự của nó như tôi đã đưa ra ví dụ trong https:// stackoverflow.com/a/42399297/5805552

Vui lòng lưu ý sử dụng ORDER BY biểu thức thực sự cung cấp cho bạn một kết quả xác định. Với ví dụ bạn đã đưa ra, tid một mình sẽ là không đủ, vì có các giá trị trùng lặp (8) với các nome khác nhau .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. làm thế nào để mô phỏng chèn bỏ qua và cập nhật khóa trùng lặp (hợp nhất sql) với postgresql?

  2. Cài đặt Postgres trên windows để sử dụng với Ruby-on-Rails

  3. Cách tránh bị khóa nhà cung cấp đám mây PostgreSQL

  4. Cách sao lưu và khôi phục cơ sở dữ liệu PostgreSQL qua DBeaver

  5. Di chuyển Rails + Postgres - tại sao tôi nhận được lỗi PG ::UndefinedFunction:ERROR:function gen_random_uuid () không tồn tại?