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

如何用单条SQL语句为People表每列生成独立数组?

解决方案

1. 从单张People表生成嵌套数组结果

你可以通过将每列的array_agg结果包裹在外层数组中来实现需求。针对surname列的NULL值,用array_remove过滤掉它,就能得到目标格式:

SELECT ARRAY[array_agg(name), array_remove(array_agg(surname), NULL)] AS result
FROM people;

执行后会返回嵌套数组结构,对应你期望的((Cell1, Cell2, Cell3), (Cell4, Cell5))格式(PostgreSQL中数组字符串表示为大括号,但实际结构是嵌套数组)。

2. 合并两张独立表的array_agg查询成单条语句

有两种实用方式实现:

方式一:子查询作为列

直接将两个表的聚合查询作为SELECT的列,既可以返回独立数组列,也可以组合成嵌套数组:

-- 返回两个独立数组列
SELECT
  (SELECT array_agg(name) FROM name) AS name_array,
  (SELECT array_agg(surname) FROM surname) AS surname_array;
-- 返回嵌套数组结果
SELECT ARRAY[
  (SELECT array_agg(name) FROM name),
  (SELECT array_agg(surname) FROM surname)
] AS result;

方式二:交叉连接(CROSS JOIN)

将两个表的聚合结果作为临时表交叉连接(每个聚合查询仅返回一行,不会产生笛卡尔积),再组合成嵌套数组:

SELECT ARRAY[n.name_array, s.surname_array] AS result
FROM (SELECT array_agg(name) AS name_array FROM name) n
CROSS JOIN (SELECT array_agg(surname) AS surname_array FROM surname) s;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 01:46:09