Inną opcją może być array_remove(..., NULL) (wprowadzony w wersji 9.3
) jeśli tags.tag jest NOT NULL (w przeciwnym razie możesz chcieć zachować NULL wartości w tablicy, ale w takim przypadku nie można odróżnić jednego istniejącego NULL tag i NULL tag ze względu na 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
Jeśli nie zostaną znalezione żadne tagi, zwracana jest pusta tablica.