Pilihan lain mungkin array_remove(..., NULL) (diperkenalkan di 9.3
) jika tags.tag adalah NOT NULL (jika tidak, Anda mungkin ingin menyimpan NULL nilai dalam array, tetapi dalam kasus itu, Anda tidak dapat membedakan antara NULL . yang ada tag dan NULL tag karena 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
Jika tidak ada tag yang ditemukan, array kosong akan dikembalikan.