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

MySQL 5.7下如何关联含逗号分隔字段的两张表查询

在MySQL 5.7中实现逗号分隔字段与关联表的关联查询

可以实现,利用MySQL 5.7支持的FIND_IN_SET()函数匹配逗号分隔的area字段,再结合GROUP_CONCAT()函数将关联的地区名称拼接成逗号分隔的字符串,就能得到你要的结果。

表结构

campaign表

id    name           area
1     campaign 1    1,2,3
2     promo         3,4

area表

id     name
1     Indonesia
2     Singapore
3     Malaysia
4     America

查询语句

SELECT
    c.id AS id_campaign,
    c.name AS campaign_name,
    GROUP_CONCAT(a.name ORDER BY a.id SEPARATOR ',') AS area_name
FROM
    campaign c
JOIN
    area a ON FIND_IN_SET(a.id, c.area) > 0
GROUP BY
    c.id, c.name;

语句说明

  • FIND_IN_SET(a.id, c.area):判断area表的id是否存在于campaign表area字段的逗号分隔列表中,返回大于0的数值则表示匹配成功。
  • GROUP_CONCAT(a.name ORDER BY a.id SEPARATOR ','):将匹配到的地区名称按id排序后拼接成逗号分隔的字符串,与期望结果格式一致。
  • 按campaign表的id和name分组,确保每个活动仅返回一条汇总记录。

查询结果

id_campaign   campaign_name   area_name
    1         campaign 1      Indonesia,Singapore,Malaysia
    2         promo           Malaysia,America

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 21:22:39