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.