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

Learn 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_idcomment_text
1John is a hard worker.
1John is very reliable.
2Alice is a great team player.
3Bob always meets deadlines.

Try Hands-On: Fiddle

Create Input Table: Gist

Desired Output

employee_idconcatenated_comments
1John is a hard worker. John is very reliable.
2Alice is a great team player.
3Bob 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.

  1. SQL for Data Science – Level 1
  2. SQL for Data Science – Level 2
  3. SQL for Data Science – Level 3
  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?