首页 > 解决方案 > 将具有相同 id 的数据合并在一列中

问题描述

我有这个问题。我需要在一列中合并具有相同 ID 的数据。数据用“,”分隔。我使用group_concat但结果是它结合了所有。我需要的是例如:

在此处输入图像描述

但结果是:

在此处输入图像描述

我的代码

 SELECT A.bookId,A.bookDate, A.serviceDate, A.bookTime,A.status, GROUP_CONCAT(C.serviceItemId 
 SEPARATOR ',') AS Servis, B.custId, B.custFname, B.custLname,B.custContact, B.custEmail, B.gender 
 FROM booking A 
 JOIN booking_service C on A.bookId = C.bookId 
 JOIN customer B ON B.custId = 
 A.cust_fk WHERE A.cust_fk = 4 
 ORDER BY A.bookId

有人能帮我吗?

标签: mysql

解决方案


为什么不group_concat将子查询中的值加入到您的主要结果集中:

SELECT  A.bookId,
        A.bookDate, 
        A.serviceDate, 
        A.bookTime,
        A.status, 
        d.Servis,
        B.custId, 
        B.custFname, 
        B.custLname,
        B.custContact, 
        B.custEmail, 
        B.gender 
 FROM   (
        SELECT  bookId,
                GROUP_CONCAT(serviceItemId SEPARATOR ',') AS Servis
          FROM  booking_service
          GROUP BY bookId
        ) d
   JOIN booking A ON a.bookID = d.bookID
   JOIN booking_service C on A.bookId = C.bookId 
   JOIN customer B ON B.custId = A.cust_fk WHERE A.cust_fk = 4 
 ORDER BY A.bookId

如果要将GROUP BY结果GROUP_CONCAT限制为例如单个bookId.


推荐阅读