The power of MySQL’s GROUP_CONCAT

Posted on:



Share Button

In the very early days of Percona Vadim wrote very nice post about GROUP_CONCAT.

But I want to show you a bit more about it.

When is GROUP_CONCAT useful? Usually while working with Support customers I recommend it when you have aggregation of many-to-many info. It makes the view simpler and more beautiful and it doesn’t need much effort to make it work.

Some simple examples:

This is a test table:

Without grouping info the only way you can check things is:

But it looks much better and easier to read with GROUP_CONCAT:

Easy? Let’s go to production usage and some “real” examples :)

Assume you have 4 Support Engineers who were working with 6 Customers this week on 15 issues.

As it usually happens: everyone (sure, except those who are on vacation :)) worked on everything with everybody.

How you would represent it?

Here is my way:

Create test tables:

  • engineers (id, name, surname, URL) – list of engineers
  • customers (id, company name, URL) – list of customers
  • issues (id, customer_id, description) – list of issues assigned to customers
  • workflow (id, engineer_id, issue_id) – list of actions: issues and engineers who worked on them


List of issues for each engineer (GROUP_CONCAT):

List of engineers for each customer (GROUP_CONCAT inside of GROUP_CONCAT):

PHP/HTML? Why not? It’s easy :)

Source Code:


1OTFix replicationMiguel Nieto
2PZHelp with installation of Percona ClusterMichael Rikmas
3VKHardware suggestionsMarcos Albe, Michael Rikmas
4FDError: no space leftMarcos Albe, Michael Rikmas, Miguel Nieto, Valerii Kravchuk
5ASHelp with setup daily backup by XtrabackupMarcos Albe, Miguel Nieto, Valerii Kravchuk
6SSPoke sales about Support agreement renewalMarcos Albe
7FDAdd more accounts for customerMiguel Nieto, Valerii Kravchuk
8PZCreate Hot Fix of Bug 1040735Marcos Albe, Michael Rikmas
9OTQuery optimisationMarcos Albe, Miguel Nieto
10OTPrepare custom build for SolarisMiguel Nieto, Valerii Kravchuk
11PZexplain about Percona Monitoring pluginsValerii Kravchuk
12SSPrepare access for customer servers for future workMarcos Albe
13ASDecribe load balancing for pt-online-schema-changeMarcos Albe
14FDManaging deadlocksMichael Rikmas, Valerii Kravchuk
15OTSuggestions about buffer pool sizeMarcos Albe, Miguel Nieto

That’s a power of GROUP_CONCAT!

Share Button

Michael Rikmas

Michael joined Percona in October 2007. He serves in several roles, including Persona's 24x7 support coverage. He has an undergraduate degree in computer science, and in 2010 he started pursuing studies to earn an MBA.


Insight for DBAs, MySQL


Leave a Reply

Your email address will not be published. Required fields are marked *