2012-06-20 93 views
1

我有下面的查詢,應該工作。但是,MySQL給我的錯誤消息'子查詢返回多行'。mysql group_concat在子查詢中返回多個行

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' 

在此查詢中使用group_concat的全部目的是每個'episode'只返回一行。

外部選擇返回多行。

內選擇,當一個單一的事件表的主鍵運行,返回單行,你會懷疑:

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 

內選擇不GROUP_CONCAT,當運行一個單一的事件表的主鍵,可能會返回多行:

select d.fulldescription 
     from episode_rhythm er join diagnosis d on er.diagnosis_fk = d.diagnosis_pk 
     WHERE er.episode_fk = 234776 

我需要做些什麼才能使它按照我的預期工作?

回答

0

您在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