子查询中的mysql group_concat返回多行
Posted
技术标签:
【中文标题】子查询中的mysql group_concat返回多行【英文标题】:mysql group_concat in subquery returns more than one row 【发布时间】:2012-06-22 15:04:49 【问题描述】:我有下面的查询,应该可以。但是,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'
在此查询中使用 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
我需要做些什么才能使其按预期工作?
【问题讨论】:
【参考方案1】:您在 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返回多行的主要内容,如果未能解决你的问题,请参考以下文章