如何在PostgreSQL查询中以JSON形式获得联接结果?

问题描述

我在下面的查询中几乎可以正常工作:它返回3行,其中一行应填充first_nation(其他两行应为NULL)。但是它们都为first_nation获得相同的数据。我需要的是从外部在内部查询中成为WHERE一部分的person.id,但我认为这不是可行的。任何帮助将不胜感激。

或者,我希望JOIN的结果是JSON,而不是显示为其他列。

SELECT person.id,(
    SELECT row_to_json(x)
    FROM (
      SELECT ref_first_nations_gov.id
      FROM ref_first_nations_gov JOIN person ON person.first_nation_id = ref_first_nations_gov.id
      WHERE person.application_id = 1 AND person.archived = false
    ) x
  ) AS first_nation
FROM person
WHERE application_id = 1 AND archived = false;

编辑:示例数据

SELECT id,application_id,first_nation_id FROM person WHERE application_id = 1;
 id | application_id | first_nation_id 
----+----------------+-----------------
  4 |              1 |                
  1 |              1 |                
  2 |              1 |                
  3 |              1 |               1

上面的查询给了我什么:

 id | first_nation 
----+--------------
  4 | {"id":1}
  1 | {"id":1}
  3 | {"id":1}

我想要的

 id | first_nation 
----+--------------
  4 | 
  1 | 
  3 | {"id":1}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)