我遇到了以我需要的方式连接我的MySQL结果的问题,所以很感激小帮助。
我有树表 - 帖子,类别,posts_categories:
帖子:
+----------+
| Field |
+----------+
| id |
| title |
| body |
| date |
+----------+
类:
+---------------+
| Field |
+---------------+
| id |
| category_name |
+---------------+
posts_categories:
+-------------+
| Field |
+-------------+
| id |
| post_id |
| category_id |
+-------------+
我当前的MySQL查询获取帖子的所有类别名称:
SELECT
posts.*, categories.category_name
FROM
posts,
categories,
posts_categories
WHERE
posts_categories.category_id = categories.id
AND posts.id = posts_categories.post_id;
上述查询结果:
id | title | posts.category_name
0 title1 category1
0 title1 category3
0 title1 category6
1 title2 category9
但是我想连接category_name,以便我的MySQL查询结果在一行中显示每个帖子的所有类别名称。 Lke this:
id | title | posts.category_name
0 title1 category1, category3, category6
1 title2 category9
我该怎么做?
答案 0 :(得分:0)
按posts
列分组并使用group_concat()
获取类别列表
SELECT posts.id, posts.title,
group_concat(categories.category_name separator ', ')
FROM posts
LEFT JOIN posts_categories ON posts.id = posts_categories.post_id
LEFT JOIN categories ON posts_categories.category_id = categories.id
GROUP BY posts.id, posts.title
BTW不再使用旧的连接语法。像我的查询一样使用显式的JOIN sytax。