求助在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
相关产品推荐
相关产品推荐

