Group_Concat()在mysql

时间:2016-12-15 05:29:39

标签: mysql sql mariadb

我有三张桌子: em_employee:

emp_number | emp_firstname |
+------------+---------------+
|          1 | Vikram        |
|          2 | S.            |
|          3 | Gopal         |
|          4 | Vaishnavi     |
|          5 | Srinivasan    |
|          6 | Saravanan  

em_project

+------------+------------------------------+
| project_id | name                         |
+------------+------------------------------+
|        339 | MoneyGram                    |
|        340 | SERVICE LINE HEAD COMPLIANCE |
|        341 | SERVICE LINE HEAD ANALYTICS  |
|        342 | GSI                          |
|        343 | Tandem                       |
|        344 | Master Card                  |
+------------+------------------------------+

em_project_employee:

+------------+------------+
| emp_number | project_id |
+------------+------------+
|          1 |        339 |
|          2 |        340 |
|          3 |        341 |
|          4 |        342 |
|          1 |        343 |
|          6 |        344 |
|          2 |        342 |
+------------+------------+

我希望输出像:

+------------+----------------------------------+
| emp_number | name                             |
+------------+----------------------------------+
|        1   | MoneyGram , Tandem               |
|        2   | SERVICE LINE HEAD COMPLIANCE,GSI |
|        3   | SERVICE LINE HEAD ANALYTICS      |
|        4   | GSI                              |
|        6   | Master Card                      |
+------------+----------------------------------+

我用GROUP_CONCAT尝试过,但出了点问题。请帮帮我。

1 个答案:

答案 0 :(得分:4)

尝试此查询,它会产生输出:

SELECT emp_number, GROUP_CONCAT(name) FROM em_project p 
INNER JOIN em_project_employee em ON p.project_id = em.project_id 
GROUP BY emp_number;

数据的顺序与您想要的输出的顺序略有不同。如果排序很重要。

GROUP_CONCAT(name ORDER BY p.project_id)