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

MySQL8.0下基于外键ID数组提取关联路径JSON数组的实现问题

MySQL 8.0 JSON数组关联合并查询方案

核心实现依赖MySQL 8.0支持的JSON_ARRAYAGG()聚合函数,将关联匹配到的多行path值合并为单个JSON数组。

方法1:基于LATERAL JOIN实现

原有LATERAL查询的逻辑无需大幅调整,只需在外层按t1.id分组后做聚合即可:

SELECT 
  t1.id,
  JSON_ARRAYAGG(t2.path) AS paths
FROM t1,
LATERAL (
  SELECT path 
  FROM t2 
  WHERE JSON_CONTAINS(t1.array, CAST(t2.id AS JSON))
) AS t2
GROUP BY t1.id;

方法2:简化的JOIN实现

也可以直接把JSON匹配作为关联条件,写法更简洁:

SELECT 
  t1.id,
  JSON_ARRAYAGG(t2.path) AS paths
FROM t1
INNER JOIN t2 
  ON JSON_CONTAINS(t1.array, CAST(t2.id AS JSON))
GROUP BY t1.id;

边界场景适配

如果需要保留t1中无匹配t2记录的行,返回空JSON数组,可以调整为左连接+空值处理:

SELECT 
  t1.id,
  IFNULL(JSON_ARRAYAGG(t2.path), JSON_ARRAY()) AS paths
FROM t1
LEFT JOIN t2 
  ON JSON_CONTAINS(t1.array, CAST(t2.id AS JSON))
GROUP BY t1.id;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:09:03