2012-06-20 5 views
1

다음과 같은 쿼리가 작동합니다. 그러나 MySQL은 'Subquery가 두 개 이상의 행을 반환합니다.'라는 오류 메시지를 표시합니다.하위 쿼리의 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을 사용하려는 목적은 모두 '에피소드'당 하나의 행만 반환하는 것입니다.

외부 선택은 여러 행을 반환합니다. 당신이 생각하는 것처럼

는 단일 에피소드 테이블의 기본 키를 실행할 때, 하나의 행을 선택 내부 반환합니다 :

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 
:

나는 당신이 찾고있는 것은 추측

관련 문제