別のオプションは、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
タグが見つからない場合は、空の配列が返されます。