MySQL关联两张表按条件将多行结果合并为同一列的SQL查询
MySQL查询语句实现方案
你可以使用MySQL内置的GROUP_CONCAT聚合函数实现同组字符串拼接,配合关联查询即可得到你需要的结果,具体语句如下:
SELECT c.CategoryID, c.Name AS Category, GROUP_CONCAT(t.Name ORDER BY t.TypeID SEPARATOR ', ') AS Types FROM Category c INNER JOIN Type t ON c.CategoryID = t.CategoryID GROUP BY c.CategoryID, c.Name ORDER BY c.CategoryID;
语句说明
- 用
INNER JOIN通过CategoryID关联两张表,如果你需要保留没有对应类型的分类,可以替换为LEFT JOIN,此时没有类型的分类Types字段会为NULL GROUP_CONCAT函数指定了按TypeID排序拼接,分隔符为,(逗号加空格),和你期望的输出格式一致- 分组字段为
Category表的CategoryID和Name,符合MySQL的分组语法规范
小提示:如果你的分类下类型数量较多,拼接结果被截断,可以在执行查询前先执行SET SESSION group_concat_max_len = 102400;调整当前会话的拼接长度上限
内容的提问来源于stack exchange,提问作者user15896389
相关产品推荐
相关产品推荐

