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

Postgres vrací [null] místo [] pro array_agg tabulky spojení

Další možností může být array_remove(..., NULL) (představeno v 9.3 ), pokud tags.tag je NOT NULL (jinak možná budete chtít ponechat NULL hodnoty v poli, ale v takovém případě nemůžete rozlišit mezi jedním existujícím NULL tag a NULL tag kvůli LEFT JOIN ):

SELECT objects.*,
     array_remove(array_agg(tags.tag), NULL) AS tags,
FROM objects
LEFT JOIN taggings ON objects.id = taggings.object_id
LEFT JOIN tags ON tags.id = taggings.tag_id

Pokud nejsou nalezeny žádné značky, vrátí se prázdné pole.



  1. Nejlepší způsob, jak skartovat data XML do databázových sloupců SQL Server

  2. Sebeodkazování ManyToMany Typ vztahuORM

  3. Jak spojit více polí concat_ws a odstranit duplicitní oddělovače pro prázdné sloty

  4. Složený index pro tabulku vztahů