MySQL group_concat is an aggregate function that join multiple strings into one single string. Some time we may need to show retrieve data as a unit. For example we can take WordPress post and categories. A post can have multiple categories. So if we want to retrieve a single post along with it’s associative categories then we have to make a JOIN Query here like this:
SELECT
p.ID,
p.post_title,
p.post_author,
term.name
FROM
lms_posts as p
INNER JOIN lms_term_relationships as term_rel ON term_rel.object_id = p.ID
INNER JOIN lms_terms as term ON term.term_id = term_rel.term_taxonomy_id
WHERE
p.ID = 4588
Above SQL query is fine and should get data like below:
MySQL result may vary, by the way main point is here we can see four rows. But it would be great if we can get all categories in one column instead of multiple rows.
So update the above query with group_concat:
SELECT
p.ID,
p.post_title,
p.post_author,
group_concat(term.name) as category
FROM
lms_posts as p
INNER JOIN lms_term_relationships as term_rel ON term_rel.object_id = p.ID
INNER JOIN lms_terms as term ON term.term_id = term_rel.term_taxonomy_id
WHERE
p.ID = 4588
So now we can see the result is absolutely fine
I am professional Web Designer & Developer. I have 5+ years of experience in relevant field. Currently I am working for a private software company named “Ollyo” as a Senior Staff Software Engineer.