子查询中的 MySQL group_concat 返回多行

标签 mysql subquery group-concat

我有下面的查询,它应该有效。但是,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/

相关文章:

mysql group_concat 和条件

mysql - 多个 GROUP_CONCAT 语句 INTO MYSQL 触发器

mysql - php, mysql with utf8 数据的奇怪排序问题

mysql - 未找到 JDeveloper MySQL 错误驱动程序

MySQL - 授予访问权限不起作用

sql - 我需要做一个子查询

mysql - 如何在mysql中创建子查询?

mysql选择如果字段行为空白替换同表上另一个字段的数据

sql - 根据订单日期从日期列表中选择价格

mysql - 我如何将分隔符作为 MySQL GROUP_CONCAT 中的变量传递?