En anden mulighed kan være array_remove(..., NULL) (introduceret i 9.3
) hvis tags.tag er NOT NULL (ellers vil du måske beholde NULL værdier i arrayet, men i så fald kan du ikke skelne mellem en enkelt eksisterende NULL tag og en NULL tag på grund af 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
Hvis der ikke findes nogen tags, returneres et tomt array.