join query mysql中的组\u concat出现问题

hvvq6cgz  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(228)

我有一个join查询,其中我留下了join 2个表 tab_sector 以及 tab_sector_subdivisions . 我在第一个表中有记录,第二个表中可能有也可能没有相应的记录。我以这样的方式连接这些表,它应该返回第一个表中的所有行和第二个表中的匹配行。另外,如果第一个表中的一行在第二个表中有多条记录,它应该返回为 GROUP_CONCAT(field_name) . 但我的查询没有按我需要的方式返回。
以下是不带组\u 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的两行。我需要的是单列但是 subdiv_id 作为 (19,20) . 然后我在查询中使用groupconcat,比如:

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'

结果将是:

我的另外两张唱片都不见了。我想在我的结果中也有那一行。
有人能帮我解决这个问题吗?提前谢谢。

9cbw7uwe

9cbw7uwe1#

分组错过了这就是为什么它会返回一个记录,

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;
xiozqbni

xiozqbni2#

对于未聚合的列,需要group by

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

相关问题