我有下面的查询,它应该有效。但是,MySQL 给我错误信息
Subquery returns more than one row
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
,当针对单个情节表主键运行时,如您所怀疑的那样返回单行:
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
,当针对单个 episode 表主键运行时,可能会返回多行:
SELECT d.fulldescription
FROM episode_rhythm er
JOIN diagnosis d ON er.diagnosis_fk = d.diagnosis_pk
WHERE er.episode_fk = 234776;
我需要做什么才能让它按我预期的那样工作?
最佳答案
您在 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
关于子查询中的 MySQL group_concat 返回多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11120212/