【发布时间】:2021-02-20 23:20:35
【问题描述】:
我想根据下面的查询将值合并到一行中,但尽管使用了 GROUP_CONCAT,我还是得到了两个单独的行。
SELECT
GROUP_CONCAT(DISTINCT d.id ORDER BY d.id ASC SEPARATOR ',') AS rd_id,
GROUP_CONCAT(DISTINCT d.length ORDER BY d.length ASC SEPARATOR ',') AS rd_length,
GROUP_CONCAT(DISTINCT c.id ORDER BY c.id ASC SEPARATOR ',') AS rc_id,
GROUP_CONCAT(DISTINCT c.length ORDER BY c.length ASC SEPARATOR ',') AS rc_length,
GROUP_CONCAT(DISTINCT d.name ORDER BY d.name ASC SEPARATOR ',') AS rd_name,
GROUP_CONCAT(DISTINCT c.title ORDER BY c.title ASC SEPARATOR ',') AS rc_name,
GROUP_CONCAT(DISTINCT s1.id ORDER BY s1.id ASC SEPARATOR ',') AS rd_staff_id,
GROUP_CONCAT(DISTINCT s2.id ORDER BY s2.id ASC SEPARATOR ',') AS rc_staff_id,
GROUP_CONCAT(DISTINCT s1.title ORDER BY s1.title ASC SEPARATOR ',') AS rd_staff_name,
GROUP_CONCAT(DISTINCT s2.title ORDER BY s2.title ASC SEPARATOR ',') AS rc_staff_name
FROM rec r
LEFT JOIN dis d ON d.id = r.dis_id
LEFT JOIN covs c ON c.id = r.cov_id
LEFT JOIN staff s1 ON FIND_IN_SET(d.id, s1.dis)
LEFT JOIN staff s2 ON FIND_IN_SET(c.id, s2.covs)
WHERE r.sid = 8
AND r.id IN (11298,11299)
GROUP BY r.id;
这给出了结果
rd_id rd_length rc_id rc_length rd_name rc_name rd_staff_id rc_staff_id rd_staff_name rc_staff_name
26 10 NULL NULL DAC NULL 74,84,88 NULL Ellie,Eve,Vicki NULL
18 10 NULL NULL APS NULL 74,84,88 NULL Ellie,Eve,Vicki NULL
我想要的是这个,
rd_id rd_length rc_id rc_length rd_name rc_name rd_staff_id rc_staff_id rd_staff_name rc_staff_name
26,18 10,10 NULL NULL DAC, APS NULL 74,84,88 NULL Ellie,Eve,Vicki NULL
r.id 11298,11299 是一个动态参数,需要保持组合。我得到的结果集将它分成两行,而不是保留它,这会破坏之后的其余逻辑。
任何想法/建议将不胜感激。
非常感谢!
【问题讨论】:
标签: mysql join group-by group-concat