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

求助在CodeIgniter4中编写关联3张MySQL表的分组拼接查询语句

MySQL 查询:获取文章并拼接关联分类字段

针对你的需求,我们可以利用MySQL的GROUP_CONCAT()函数实现分类ID和名称的逗号分隔拼接,同时通过分组确保文章记录不重复。以下是完整的查询语句:

SELECT 
    a.id,
    a.name,
    GROUP_CONCAT(c.id SEPARATOR ',') AS categoryId,
    GROUP_CONCAT(c.name SEPARATOR ',') AS categoryName
FROM 
    article a
LEFT JOIN 
    article_category ac ON a.id = ac.article_id
LEFT JOIN 
    category c ON ac.category_id = c.id
GROUP BY 
    a.id, a.name;

关键说明:

  • LEFT JOIN:使用左连接可确保没有关联任何分类的文章也会被查询出来;若只需要保留有分类的文章,可替换为INNER JOIN。
  • GROUP_CONCAT():该函数会将同一文章下的所有分类ID、分类名称分别拼接成逗号分隔的字符串,满足categoryId和categoryName的别名要求。
  • GROUP BY:通过文章的id和name分组,保证每个文章只返回一条无重复记录(由于id是主键,仅按a.id分组也可,加上a.name是为了兼容严格SQL模式)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 00:14:57