postgreSql利用json相关函数查询不同数据结构的数据以json返回,减少查询次数

本文展示了如何在PostgreSQL中利用json相关函数进行查询,以减少查询次数并一次性返回不同结构的数据。以一个示例展示统计name为'aaa'和'bbb'的记录数,并返回整个t1表数据的json格式结果,利用row_to_json, array_to_json和array_agg等函数实现。" 104797952,8189199,递归与排序解决数字游戏优化问题,"['算法', '编程', '递归优化', '数据结构', '字符串操作']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在没有json的情况下,数据库很难把不同结构的数据一次性返回,如果你很在乎查询次数,可以参考一下。

现在mysql和postgresql都支持json了,这边我以postgresql为例,写个例子:

假设我们有数据表t1,有两列:name,version,我们统计name为aaa和bbb的数量,同时返回整个t1的数据

select row_to_json(t)
from (
  select (select count(*) from test.t1 where name='aaa') as aaa_count,
         (select count(*) from test.t1 where name='bbb') as bbb_count,
        (
          select array_to_json(array_agg(row_to_json(d)))
          from (
            select name, version
            from test.t1
          ) d
        ) as names
) as t

说明:

row_to_json可以把表查询结果转成json

array_to_json可以把数组转成json

通过array_agg可以把多条row_to_json的结果转成数组

查询结果为:

{

"aaa_count":1,

"bbb_count":1,

"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值