Sql if/else列值选择select table,在json中排除null

Sql if/else列值选择select table,在json中排除null,sql,postgresql,postgresql-9.3,Sql,Postgresql,Postgresql 9.3,使用此查询获取json结果,如下面的数据结构所示 SELECT c.* , row_to_json(mg.*) as media_gallery, row_to_json(m.*) as media, row_to_json(g.*) as gallery FROM comment c LEFT JOIN media m ON m.id = c.endpoint_id .... join mg g table 是否可以根据列值选择“选择表”可能与此语法类

使用此查询获取json结果,如下面的数据结构所示

SELECT c.* ,
    row_to_json(mg.*) as media_gallery, 
    row_to_json(m.*) as media,
    row_to_json(g.*) as gallery
  FROM comment c

  LEFT JOIN media m ON m.id = c.endpoint_id
  .... join mg g table
是否可以根据列值选择“选择表”可能与此语法类似,如果结果为空,则排除媒体库、媒体和库

SELECT c.* ,
  CASE WHEN c.endpoint_code = 1
  THEN
    row_to_json(mg.*) as media_gallery, 
    row_to_json(m.*) as media,
  END

  CASE WHEN c.endpoint_code = 0 THEN
    row_to_json(g.*) as gallery
  END

  FROM comment c

  LEFT JOIN media m ON m.id = c.endpoint_id
  .... join mg g table
结果

  rows: 
[ { id: 7,
  endpoint_code: 0,
  endpoint_id: 27,
  status: 0,

  media_gallery: null,
  media: null,
  gallery: 
   { id: 27,
     status: 0,
     create_date: 
   ...
更新

我也试过这个,但没用

COALESCE( row_to_json(mg.*), null) AS media_gallery,

这是你想要的吗

SELECT c.* ,
       (CASE WHEN c.endpoint_code = 1 THEN row_to_json(mg.*) END) as media_gallery,
       (CASE WHEN c.endpoint_code = 1 THEN row_to_json(m.*) END) as media,
       (CASE WHEN c.endpoint_code = 0 THEN row_to_json(g.*) END) as gallery
.  . .

这是你想要的吗

SELECT c.* ,
       (CASE WHEN c.endpoint_code = 1 THEN row_to_json(mg.*) END) as media_gallery,
       (CASE WHEN c.endpoint_code = 1 THEN row_to_json(m.*) END) as media,
       (CASE WHEN c.endpoint_code = 0 THEN row_to_json(g.*) END) as gallery
.  . .

一个
case
语句只返回一个表达式。一个case表达式…@A_horse_和_no_名称感谢您的回复,我不明白:(.我根据下面的Gordon Linoff答案更新了我的代码,但仍然返回结果包含media_gallery、media或gallery,用例是否没有任何变化…你知道为什么以及如何修复它吗?
case
语句只返回一个表达式。一个case表达式…@A_horse_,没有名称感谢您的回复,我只是不明白:(.我根据下面的Gordon Linoff答案更新了我的代码,但仍然返回结果包含media_gallery、media或gallery,没有任何更改用例或没有…你知道为什么以及如何修复它吗?感谢回复,我尝试了这一点,但似乎与非用例没有什么不同,它仍然返回结果,如
media_gallery:null,media:null,gallery:{id:27,状态:0,
我只想要返回库或媒体库,媒体…感谢您的回复我尝试了这个,但似乎与不使用用例没有什么不同,它仍然返回结果,如
媒体库:null,媒体:null,库:{id:27,状态:0,
我只想要返回库或媒体库,媒体。。。