首页/数据/SQL 速查/JSON 聚合:JSON_ARRAYAGG 与 json_agg
本包目录(311 条)
查询基础33 条连接与子查询40 条
聚合与窗口函数54 条
函数速查60 条变更与事务52 条性能与执行计划72 条

JSON 聚合:JSON_ARRAYAGG 与 json_agg

把组内数据聚合成 JSON 数组/对象,接口直接消费;MySQL 8 用 JSON_ARRAYAGG/JSON_OBJECTAGG,PostgreSQL 用 json_agg/jsonb_object_agg。

SQL 速查数据更新于 2026-10-12

MySQL 8

MySQL 8
SELECT user_id,
       JSON_ARRAYAGG(product_name) AS products
FROM order_items
GROUP BY user_id;

PostgreSQL

PostgreSQL
SELECT user_id,
       json_agg(product_name ORDER BY product_name) AS products
FROM order_items
GROUP BY user_id;
MySQLJSON_ARRAYAGG(expr)、JSON_OBJECTAGG(key, value)
PostgreSQLjson_agg / jsonb_agg;对象用 jsonb_object_agg
顺序PG 支持在聚合内 ORDER BY;MySQL 需先在子查询里排序

易错点

  • MySQL 的 JSON_ARRAYAGG 不保证元素顺序,需要固定顺序时先在子查询排序再聚合
  • NULL 的处理两库不同(如 null 值是否进入数组),对接接口前用样例数据核对输出 JSON

数据来源与参考

  • MySQL 8.0 Reference Manual · JSON Aggregation Functions
  • PostgreSQL Documentation · Aggregate Functions · json_agg
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌