एक अन्य विकल्प हो सकता है 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
यदि कोई टैग नहीं मिलता है, तो एक खाली सरणी लौटा दी जाती है।