JOIN 查询 mysql 中的 GROUP_CONCAT 问题

issue with GROUP_CONCAT in JOIN query mysql

我有一个连接查询,我离开连接 2 tables 说 tab_sectortab_sector_subdivisions。我在第一个 table 中有记录,在第二个 table 中可能有也可能没有相应的记录。我加入这些 table 的方式应该是 return 第一个 table 的所有行和第二个 table 的匹配行。此外,如果第一个 table 中的一行在第二个 table 中有多个记录,它应该 return 为 GROUP_CONCAT(field_name)。但是我的查询没有 return 我需要的方式。

这是没有 GROUP_CONCAT 的查询:

SELECT tab_sector.sector_id,tab_sector.sector_title,tab_sector.sector_desc,tab_sector.sector_image,tab_sector_subdivisions.subdiv_id 
FROM tab_sector 
LEFT JOIN tab_sector_subdivisions 
ON tab_sector_subdivisions.sector_id = tab_sector.sector_id WHERE tab_sector.active = 'Y'

结果是:

你可以看到 id 20 的 2 行。我需要的是单行,但 subdiv_id(19,20)。然后我在查询中使用了 GROUP_CONCAT,例如:

    SELECT tab_sector.sector_id,tab_sector.sector_title,tab_sector.sector_desc,tab_sector.sector_image,GROUP_CONCAT(tab_sector_subdivisions.subdiv_id) 
FROM tab_sector 
LEFT JOIN tab_sector_subdivisions 
ON tab_sector_subdivisions.sector_id = tab_sector.sector_id WHERE tab_sector.active = 'Y'

那么结果将是:

我的另外两条记录在这里面不见了。我的结果中也想要那几行。

谁能帮我解决这个问题?提前致谢。

您需要对未聚合的列进行分组

SELECT tab_sector.sector_id,tab_sector.sector_title,tab_sector.sector_desc
    ,tab_sector.sector_image,group_concat(tab_sector_subdivisions.subdiv_id )
LEFT JOIN tab_sector_subdivisions 
        ON tab_sector_subdivisions.sector_id = tab_sector.sector_id 
              AND tab_sector.active = 'Y'
GROUP BY  tab_sector.sector_id,tab_sector.sector_title,
     tab_sector.sector_desc, tab_sector.sector_image

group by missed 这就是它返回一条记录的原因,

  SELECT tab_sector.sector_id,tab_sector.sector_title,tab_sector.sector_desc,tab_sector.sector_image,GROUP_CONCAT(tab_sector_subdivisions.subdiv_id) 
FROM tab_sector 
LEFT JOIN tab_sector_subdivisions 
ON tab_sector_subdivisions.sector_id = tab_sector.sector_id WHERE tab_sector.active = 'Y'
group by tab_sector.sector_id,tab_sector.sector_title,tab_sector.sector_desc,tab_sector.sector_image;