多表GROUP_CONTACT澄清

时间:2017-08-07 17:09:53

标签: mysql group-concat

我创建了一个rextester供您使用:http://rextester.com/MDHD7605

要求:

  • 应仅返回1(单)行

  • group_concatenated应该是唯一/不同的组织数据,而不是相同的组织数据连接3次。

我得到的是返回3行,并且连续数据反复相同。它应该是从每3行(连接数据)到1​​列的数据。

GROUP_CONCAT数据应该是:

  

84864-双子城脊柱中心 - 1984-1985 ^,99143-特殊医院   手术 - 1986-1986 ^^ 99143-华盛顿大学 - 1986-1986 ^

我得到的是您在预览/示例链接中看到的内容。

我的查询中出错了什么?我该如何纠正呢?

1 个答案:

答案 0 :(得分:1)

您需要使用GROUP BY而不是相关子查询:

SELECT genealogy_users.imis_id, genealogy_relations.user_id
       ,genealogy_relations.relation_type
       ,genealogy_users.home_page
       ,GROUP_CONCAT(genealogy_orgs.org_id,'-',genealogy_orgs.org_name,'-',genealogy_relations.start_year,'-',genealogy_relations.end_year,'^') 
          AS org_list
FROM genealogy_users 
JOIN genealogy_relations ON genealogy_users.imis_id = genealogy_relations.user_id 
JOIN genealogy_orgs ON genealogy_relations.org_id = genealogy_orgs.org_id 
WHERE genealogy_users.imis_id = '00003'
GROUP BY genealogy_users.imis_id
        ,genealogy_relations.user_id, genealogy_relations.relation_type
       ,genealogy_users.home_page

<强> Rextester Demo