【问题标题】:mysql group_concat in subquery returns more than one row子查询中的mysql group_concat返回多行
【发布时间】: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

我需要做些什么才能使其按预期工作?

【问题讨论】:

    标签: mysql subquery group-concat


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2011-04-28
      • 2014-01-18
      • 1970-01-01
      • 1970-01-01
      • 2014-02-15
      • 2018-03-08
      • 1970-01-01
      • 1970-01-01
      • 2017-05-29
      相关资源
      最近更新 更多