Друга опция може да е array_remove(..., NULL)
(въведено в 9.3
), ако tags.tag
е NOT NULL
(в противен случай може да искате да запазите NULL
стойности в масива, но в този случай не можете да направите разлика между един съществуващ NULL
етикет и NULL
поради 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
Ако не бъдат намерени етикети, се връща празен масив.