sql >> Base de Datos >  >> RDS >> PostgreSQL

Conservar el orden de los distintos dentro de string_agg

Como ha descubierto, no puede combinar DISTINCT y ORDER BY si no ordena primero por la expresión distinta:

  • ni en agregados:

  • ni en SELECCIONAR:

Sin embargo, podría usar algo como

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

con la ayuda de una función arry_uniq_stable que elimina duplicados en una matriz sin alterar su orden como di un ejemplo en https:// stackoverflow.com/a/42399297/5805552

Tenga cuidado de usar un ORDER BY expresión que realmente le da un resultado determinista. Con el ejemplo que has dado, tid solo no sería suficiente, ya que hay valores duplicados (8) con diferente nome .