作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我正在做一些简单的事情,比如从两个表中选择所有内容:
"SELECT * FROM table1; SELECT * FROM table2;"
它将返回一个如下所示的结果对象:
{rows:[{},{},{} etc...]}
其中行对象数组是 table1
中的每一行,后面是 table2
中的每一行。
我想要的是能够将上面的 SELECT
语句组合成一个数据库查询,但让它返回如下内容:
[
{table1rows:[{},{},{}]}
,{table2rows:[{},{},{}]}
]
... 这样我就可以避免对数据库进行多次查询,然后将每个查询的结果对象捏造成一个自定义对象,我像穴居人一样从数据库查询引用到数据库查询。因此,我可以在客户端处理一个查询,一个干净的结果集,知道哪些行数组来自哪个表。
你可以为此使用 AS
吗?我如何通过一个查询实现这一目标?
最佳答案
你基本上需要:
- 使用 combine multiple queries 与 UNION ALL
;
- 使用 json_build_object
构建 json
数组和 json_agg
函数;
示例 SELECT
可以是以下内容:
WITH table1(a1,b1) AS ( VALUES
('valA1','valB1')
), table2(a2,b2) AS ( VALUES
('valA2','valB2')
)
SELECT json_agg(each_table_rows.data) FROM (
SELECT json_build_object('table1rows',tbl1.*) AS data
FROM (
SELECT t1.* FROM table1 t1
) tbl1
UNION ALL
SELECT json_build_object('table2rows',tbl2.*)
FROM (
SELECT t2.* FROM table2 t2
) tbl2
) each_table_rows;
结果:
json_agg
----------------------------------------------------------------------------------------------
[{"table1rows" : {"a1":"valA1","b1":"valB1"}}, {"table2rows" : {"a2":"valA2","b2":"valB2"}}]
(1 row)
关于arrays - POSTGRESQL 多选,多行数组可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34693147/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!