【问题标题】:issue with GROUP_CONCAT in JOIN query mysqlJOIN查询mysql中的GROUP_CONCAT问题
【发布时间】:2018-12-12 19:33:09
【问题描述】:

我有一个联接查询,其中我离开联接 2 个表,例如 tab_sectortab_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


【解决方案1】:

对于未聚合的列,您需要分组依据

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

【讨论】:

    【解决方案2】:

    按错过分组,这就是它返回一条记录的原因,

      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;
    

    【讨论】:

      猜你喜欢
      • 2018-05-12
      • 1970-01-01
      • 1970-01-01
      • 2014-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-09
      相关资源
      最近更新 更多