You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Supabase中通过数组聚合实现按parentid分组查询?

在Supabase中通过SQL视图/函数聚合相同parentid的子数据

你可以利用PostgreSQL的json_agg函数在数据库端完成聚合,以下是两种实现方式:

1. 创建视图

假设你的源表名为parent_child(请替换为实际表名),执行以下SQL创建视图:

CREATE VIEW aggregated_parent_children AS
SELECT
  parentid,
  json_agg(json_build_object('childname', childname)) AS children
FROM parent_child
GROUP BY parentid;

创建完成后,直接查询该视图(或通过Supabase API调用这个视图),就能得到目标聚合结果:

SELECT * FROM aggregated_parent_children;

2. 创建SQL函数

如果需要更灵活的调用方式,可以创建返回表类型的函数:

CREATE OR REPLACE FUNCTION get_aggregated_children()
RETURNS TABLE(parentid INT, children JSON) AS $$
BEGIN
  RETURN QUERY
  SELECT
    parentid,
    json_agg(json_build_object('childname', childname)) AS children
  FROM parent_child
  GROUP BY parentid;
END;
$$ LANGUAGE plpgsql;

调用函数获取结果:

SELECT * FROM get_aggregated_children();

核心逻辑说明

  • json_build_object将childname字段包装为{"childname": "xxx"}的对象格式
  • json_agg把同一parentid下的所有子对象聚合为数组
  • 数据库端聚合能减少客户端传输与处理的数据量,比客户端聚合更高效

内容的提问来源于stack exchange,提问作者pancake

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 04:40:58