Mysql逗号分隔值

时间:2016-04-07 08:56:01

标签: mysql sql

我有两张表,类似于下表1和表1。表2.我想要类似于表3

  Table 1

ParticipantsId | Description | Duration
1,2                 Demo        60 mins
1                   Test        25 mins
1,2,3,4             Alpha       30 mins
4,5,6,2             MCQ         120 mins

表2

UserId |  Name   |  Age
  1       Aku        21
  2       Greg       18
  3       Denver     24
  4       Mike       22
  5       Sid        24
  6       Sriten     19 

我希望out out是

表3

users                   | Description | Duration
Aku,Greg                   Demo          60
Aku                        Test          25
Aku,Greg,Denver,Mike       Alpha         30
Mike,Sid,Sriten,Greg       MCQ           120  

我已尝试过find_by_set,群组和其他各种可能性,但我无法获得所需的结果,请帮忙

1 个答案:

答案 0 :(得分:4)

您可以同时使用GROUP_CONCAT()FIND_IN_SET()

SELECT
    GROUP_CONCAT(t2.`name`) AS users,
    t1.Description,
    CAST(t1.Duration AS UNSIGNED) AS Duration
FROM
    table1 t1,
    table2 t2
WHERE
    FIND_IN_SET(t2.userID, t1.ParticipantsId)
GROUP BY
    t1.Description,
    CAST(t1.Duration AS UNSIGNED)

结果是:

+----------------------+-------------+----------+
| users                | Description | Duration |
+----------------------+-------------+----------+
| Greg,Denver,Aku,Mike | Alpha       |       30 |
| Greg,Aku             | Demo        |       60 |
| Greg,Mike,Sid,Sriten | MCQ         |      120 |
| Aku                  | Test        |       25 |
+----------------------+-------------+----------+
4 rows in set

但是你必须考虑数据结构的规范化,逗号分隔值是一种不好的做法,正如之前提到的那样。