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.