SELECT C.id, C.name, json_agg(E) AS emails FROM contacts C
LEFT JOIN emails E ON C.id = E.user_id
GROUP BY C.id;
Postgres 9.3 создает, например, вывод
id | name | emails
-----------------------------------------------------------
1 | Ryan | [{"id":3,"user_id":1,"email":"[email protected]"},{"id":4,"user_id":1,"email":"[email protected]"}]
2 | Nick | [null]
Поскольку я использую LEFT JOIN, будут случаи, когда нет соответствия правой таблице, поэтому пустые (нулевые) значения заменяются на столбцы правой таблицы. В результате я получаю [null]
как один из агрегатов JSON.
Как я могу игнорировать / удалить null
, чтобы у меня был пустой массив JSON []
, когда столбец правой таблицы имеет значение NULL?
Ваше здоровье!