我有一个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'
结果将是:
我的另外两张唱片都不见了。我想在我的结果中也有那一行。
有人能帮我解决这个问题吗?提前谢谢。
2条答案
按热度按时间9cbw7uwe1#
分组错过了这就是为什么它会返回一个记录,
xiozqbni2#
对于未聚合的列,需要group by