【发布时间】:2016-04-14 02:04:18
【问题描述】:
假设我正在做一些简单的事情,比如从两个表中选择所有内容:
"SELECT * FROM table1; SELECT * FROM table2;"
它将返回一个结果对象,如下所示:
{rows:[{},{},{} etc...]}
其中行对象数组是来自table1 的每一行,然后是来自table2 的每一行。
我想要的是能够将上述SELECT 语句组合成一个数据库查询,但让它返回如下内容:
[
{table1rows:[{},{},{}]}
,{table2rows:[{},{},{}]}
]
...这样我就可以避免数据库的多个查询,然后将每个查询的结果对象伪造为我从数据库查询引用到数据库查询的自定义对象,就像一个穴居人。因此,我可以在客户端处理一个查询,一个干净的结果集,知道哪个行数组来自哪个表。
你可以使用AS吗?我如何通过一个查询来实现这一目标?
【问题讨论】:
-
您可以使用
UNION ALL来组合两次选择的结果。但是从两个表中选择每一列和每一行听起来不是一个好主意。 -
我不会选择现实中的所有行,但为了便于阅读,我把那部分省略了......
-
您还忽略了食物链的哪一部分将输出格式化为 JSON 数组,因为 Postgres 不会为普通的
SELECT执行此操作。您可以让 Postgres 输出 JSON,但您的未命名软件将在另一次嵌套。
标签: arrays json postgresql select array-agg