【发布时间】:2018-12-12 19:33:09
【问题描述】:
我有一个联接查询,其中我离开联接 2 个表,例如 tab_sector 和 tab_sector_subdivisions。我在第一个表中有记录,在第二个表中可能有也可能没有相应的记录。我以这样的方式加入这些表,它应该从第一个表返回所有行并从第二个表返回匹配行。此外,如果第一个表中的一行在第二个表中有多个记录,它应该返回为GROUP_CONCAT(field_name)。但我的查询没有返回我需要的方式。
这是没有 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'
您可以看到 2 行的 id 20。我需要的是单行,但 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'
那么结果将是:
我的另外两条记录在此丢失。我希望我的结果中也有这些行。
谁能帮我解决这个问题?提前致谢。
【问题讨论】:
-
group_concat 是一个聚合运算符 & 聚合运算符使用 group by(如果不显式,则隐式)。这是一个常见问题解答,如果像往常一样,您在谷歌上搜索了许多关于您的问题/问题/目标的清晰准确的措辞,您就会找到答案。例如,只是“在 JOIN 查询 mysql 行中缺少 GROUP_CONCAT”。
标签: mysql left-join group-concat