sql >> Database teknologi >  >> RDS >> PostgreSQL

Bevar rækkefølgen af ​​distinkt inde i string_agg

Som du har fundet ud af, kan du ikke kombinere DISTINCT og ORDER BY hvis du ikke sorterer efter det distinkte udtryk først:

  • hverken i aggregater:

  • heller ikke i SELECT:

Men kunne bruge noget som

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

ved hjælp af en funktion arry_uniq_stable der fjerner dubletter i et array uden at ændre dets rækkefølge, som jeg gav et eksempel på https:// stackoverflow.com/a/42399297/5805552

Sørg for at bruge en ORDER BY udtryk, der faktisk giver dig et deterministisk resultat. Med det eksempel, du har givet, tid alene ville ikke være nok, da der er duplikerede værdier (8) med forskellige nome .



  1. Datamaskering i realtid ved hjælp af triggere

  2. Hvad er forskellen mellem Non-Repeatable Read og Phantom Read?

  3. gpload-værktøj i greenplum

  4. Ikke alle parametre blev brugt i SQL-sætningen (Python, MySQL)