簡體   English   中英

Mysql逗號分隔值

[英]Mysql comma separated value

我有兩個表,看起來類似於下表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 

我想要出局

表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,group和其他各種可能性,但我無法獲得所需的結果,請幫忙

您可以一起使用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

但是,您必須考慮數據結構的規范化,逗號分隔值是一種不好的做法,正如之前提到的那樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM