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

MySQL单查询实现两表关联:将子表数据转为数组格式

在MySQL中关联两表并将图片字段聚合为数组格式查询

当然可行,MySQL提供了两种实用方法来实现这个需求,将关联的图片名称聚合为数组/结构化集合:

方法1:使用GROUP_CONCAT(兼容所有MySQL版本)

利用GROUP_CONCAT函数将同一条新闻的图片名称拼接成字符串,若需要数组格式,可通过字符串拼接生成JSON风格的数组:

SELECT 
    n.newsId,
    n.topic,
    CONCAT('[', GROUP_CONCAT('"', i.imgName, '"'), ']') AS imgArray
FROM tbl_news n
LEFT JOIN tbl_imgs i ON n.newsId = i.newsId
WHERE n.newsId = 1 -- 可根据需要筛选特定新闻,或去掉WHERE查询所有
GROUP BY n.newsId, n.topic;

查询结果示例:

newsIdtopicimgArray
1top1["img1.jpg","img2.jpg","img3.jpg","img4.jpg"]

方法2:使用JSON_ARRAYAGG(MySQL 8.0+版本支持)

如果你的MySQL版本是8.0及以上,推荐使用原生JSON函数JSON_ARRAYAGG,它会直接生成标准的JSON数组,无需手动拼接:

SELECT 
    n.newsId,
    n.topic,
    JSON_ARRAYAGG(i.imgName) AS imgArray
FROM tbl_news n
LEFT JOIN tbl_imgs i ON n.newsId = i.newsId
WHERE n.newsId = 1
GROUP BY n.newsId, n.topic;

该查询返回的imgArray字段是标准JSON数组类型,在应用层可以直接解析为数组对象。


内容的提问来源于stack exchange,提问作者Rıza Altınok

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 06:07:45