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?
Ура!