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.