PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Préserver l'ordre de distinct à l'intérieur de string_agg

Comme vous l'avez découvert, vous ne pouvez pas combiner DISTINCT et ORDER BY si vous ne commandez pas d'abord par l'expression distincte :

  • ni dans les agrégats :

  • ni dans SELECT :

Cependant pourrait utiliser quelque chose comme

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

à l'aide d'une fonction arry_uniq_stable qui supprime les doublons dans un tableau sans modifier son ordre comme j'ai donné un exemple dans https:// stackoverflow.com/a/42399297/5805552

Veuillez prendre soin d'utiliser un ORDER BY expression qui vous donne en fait un résultat déterministe. Avec l'exemple que vous avez donné, tid seul ne suffirait pas, car il y a des valeurs en double (8) avec différents nome .