Eine andere Option könnte array_remove(..., NULL) sein (eingeführt in 9.3
). ) wenn tags.tag ist NOT NULL (Andernfalls möchten Sie vielleicht NULL beibehalten Werte im Array, aber in diesem Fall können Sie nicht zwischen einem einzelnen vorhandenen NULL unterscheiden -Tag und ein NULL -Tag aufgrund des 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
Wenn keine Tags gefunden werden, wird ein leeres Array zurückgegeben.