Menu

How to concatenate text from multiple rows into a single text string in MySQL?

Problem

You need to concatenate text from multiple rows into a single text string, for every group present in another column using SQL.

For example, from the employee_comments table, concatenate all comments from a given employee in one row. See the input and the desired output below.

Input

employee_id comment_text
1 John is a hard worker.
1 John is very reliable.
2 Alice is a great team player.
3 Bob always meets deadlines.

Try Hands-On: Fiddle

Create Input Table: Gist

Desired Output

employee_id concatenated_comments
1 John is a hard worker. John is very reliable.
2 Alice is a great team player.
3 Bob always meets deadlines.

There are multiple ways to do this. Let’s look at some of them.

Solution:

Using GROUP_CONCAT() with GROUP BY

    SELECT
        employee_id,
        GROUP_CONCAT(comment_text SEPARATOR ' ') AS concatenated_comments
    FROM
        employee_comments
    GROUP BY
        employee_id;

Explanation:

This query selects the employee_id and concatenates the comment_text for each employee with a space separator. The GROUP BY clause groups the results by employee_id.

Recommended Courses

  1. SQL for Data Science – Level 1
  2. SQL for Data Science – Level 2
  3. SQL for Data Science – Level 3

Recommended Tutorial

  1. Introduction to SQL
  2. SQL Window Functons – Made Simple and Easy
  3. SQL Subquery

More SQL Questions

  1. How to select the top 1 row in each group in SQL?
  2. How to switch (transpose) rows and columns in SQL?
  3. How to select first row in each GROUP BY group?

Course Preview

Machine Learning A-Z™: Hands-On Python & R In Data Science

Free Sample Videos:

Machine Learning A-Z™: Hands-On Python & R In Data Science

Machine Learning A-Z™: Hands-On Python & R In Data Science

Machine Learning A-Z™: Hands-On Python & R In Data Science

Machine Learning A-Z™: Hands-On Python & R In Data Science

Machine Learning A-Z™: Hands-On Python & R In Data Science