MySQL group_concat在子查询中返回多于一行

use*_*297 5 mysql subquery group-concat

我有一个查询,如下,应该有效。但是,MySQL 给了我错误消息

子查询返回多行

SELECT e.episode_pk,
       (SELECT GROUP_CONCAT(d.fulldescription separator ', ')
        FROM episode_rhythm er
        JOIN diagnosis d ON er.diagnosis_fk = d.diagnosis_pk 
        WHERE er.episode_fk = e.episode_pk
        GROUP BY d.fulldescription) as rhythmDesc 
FROM episode e  
WHERE e.patientid_fk = '89976';
Run Code Online (Sandbox Code Playgroud)

在此查询中使用 的全部目的GROUP_CONCAT是每个“情节”仅返回一行。

外部选择返回多行。
当针对单个剧集表主键运行时,内部SELECT会返回一行,正如您所怀疑的:

SELECT group_concat(d.fulldescription separator ', ')
FROM episode_rhythm er
JOIN diagnosis d ON er.diagnosis_fk = d.diagnosis_pk 
WHERE er.episode_fk = 234776
GROUP BY d.fulldescription;
Run Code Online (Sandbox Code Playgroud)

当针对单个剧集表主键运行时,SELECT不带 的内部可能会返回多行:GROUP_CONCAT

SELECT d.fulldescription
FROM episode_rhythm er
JOIN diagnosis d ON er.diagnosis_fk = d.diagnosis_pk 
WHERE er.episode_fk = 234776;
Run Code Online (Sandbox Code Playgroud)

我需要做什么才能让它按我的预期工作?

Oli*_*and 4

您在 SELECT 中的子查询有点可疑。

我猜你正在寻找的是:

SELECT
    e.episode_pk,
    GROUP_CONCAT(d.fulldescription separator ', ')
FROM episode_rhythm er
JOIN diagnosis d ON er.diagnosis_fk = d.diagnosis_pk
JOIN episode e ON er.episode_fk = e.episode_pk
WHERE e.patientid_fk='89976' 
GROUP BY e.episode_pk
Run Code Online (Sandbox Code Playgroud)