sql >> Databasteknik >  >> RDS >> PostgreSQL

Bevara ordningen för distinkt inuti string_agg

Som du har upptäckt kan du inte kombinera DISTINCT och ORDER BY om du inte sorterar efter det distinkta uttrycket först:

  • varken i aggregat:

  • inte heller i SELECT:

Kan dock använda något som

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

med hjälp av en funktion arry_uniq_stable som tar bort dubbletter i en array utan att ändra dess ordning som jag gav ett exempel på https:// stackoverflow.com/a/42399297/5805552

Var noga med att använda en ORDER BY uttryck som faktiskt ger dig ett deterministiskt resultat. Med exemplet du har gett, tid Enbart skulle inte vara tillräckligt, eftersom det finns dubbletter av värden (8) med olika nome .



  1. Hur kör man ett 32-bitars SSIS-paket i ett 64-bitarspaket?

  2. C# DateTime ändras till ett annat format

  3. SQL Server Interns:Problematiska operatörer Pt. III – Sorterar

  4. Kärndumpfil och lägga till felsökningskoder i programmets körbara program för Oracle Apps