sql >> Databáze >  >> RDS >> PostgreSQL

Zachovat pořadí odlišných uvnitř string_agg

Jak jste zjistili, nemůžete kombinovat DISTINCT a ORDER BY pokud nejprve neřadíte podle odlišného výrazu:

  • ani v souhrnech:

  • ani v SELECT:

Mohlo by se však použít něco jako

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

pomocí funkce arry_uniq_stable který odstraňuje duplikáty v poli bez změny jeho pořadí, jak jsem uvedl příklad v https:// stackoverflow.com/a/42399297/5805552

Použijte prosím ORDER BY výraz, který vám ve skutečnosti dává deterministický výsledek. S příkladem, který jste uvedli, tid samotné by nestačilo, protože existují duplicitní hodnoty (8) s různými nome .



  1. Doporučené postupy pro zotavení po havárii Microsoft SQL Server

  2. Vybrat, dokud se řádek neshoduje v postgresql?

  3. Připojení MySQL se neuzavře

  4. Dotaz aktivních záznamů Codeigniter trvá příliš dlouho, než načte data z databáze