Ett annat alternativ kan vara array_remove(..., NULL) (introducerades i 9.3
) om tags.tag är NOT NULL (annars kanske du vill behålla NULL värden i arrayen, men i så fall kan du inte skilja på en enda befintlig NULL tagg och en NULL taggen på grund av 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
Om inga taggar hittas returneras en tom array.