问题描述
我在下面的查询中几乎可以正常工作:它返回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 (将#修改为@)