小编use*_*211的帖子

Postgresql LEFT JOIN json_agg()忽略/删除NULL

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;
Run Code Online (Sandbox Code Playgroud)

例如,Postgres 9.3创建输出

  id  |  name  |  emails
-----------------------------------------------------------
   1  |  Ryan  |  [{"id":3,"user_id":1,"email":"hello@world.com"},{"id":4,"user_id":1,"email":"again@awesome.com"}]
   2  |  Nick  |  [null]
Run Code Online (Sandbox Code Playgroud)

由于我使用LEFT JOIN,因此会出现没有右表匹配的情况,因此将空(null)值替换为右表列.因此,我将[null]作为JSON聚合之一获得.

我如何忽略/删除null所以[]当右表列为空时我有一个空的JSON数组?

干杯!

sql postgresql json postgresql-9.3

43
推荐指数
4
解决办法
2万
查看次数

标签 统计

json ×1

postgresql ×1

postgresql-9.3 ×1

sql ×1