您的位置:首页 > 汽车 > 新车 > 永久开源免费pbootcms官网_游戏开发软件免费下载_关键词研究工具_网站整站优化推广方案

永久开源免费pbootcms官网_游戏开发软件免费下载_关键词研究工具_网站整站优化推广方案

2024/11/18 0:09:26 来源:https://blog.csdn.net/chenping1993/article/details/143405014  浏览:    关键词:永久开源免费pbootcms官网_游戏开发软件免费下载_关键词研究工具_网站整站优化推广方案
永久开源免费pbootcms官网_游戏开发软件免费下载_关键词研究工具_网站整站优化推广方案

问题出现的场景:

有一个主表 a,一个子表 b

a表有两条数据,a表第一条数据在b表中有一条子数据,a表第二条数据在b表中有两条子数据。

现在想要查询出来a表的所有数据和a表的子表b的id,b的id 使用GROUP_CONCAT拼接

有问题的sql:

selectsr.script_catalog_id,sr.name,sr.user_id,u.loginname,sr.create_time,sr.update_time,GROUP_CONCAT(tds.script_id) AS sids,sr.statusFROM t_dg_script_catalog srleft join t_dg_script tds on sr.script_catalog_id = tds.script_catalog_id left join t_dg_user u on u.user_id = sr.user_idwhere sr.status =1;

结果:

预期是要把主表的两条数据都查询出来,但是只查询出来一条结果,并且结果sids不对

解决方案:

1、因为主表的id是不重复,根据主表id分组,然后 GROUP_CONCAT拼接子表id

selectsr.script_catalog_id,sr.name,sr.user_id,u.loginname,sr.create_time,sr.update_time,GROUP_CONCAT(tds.script_id) AS sids,sr.statusFROM t_dg_script_catalog srleft join t_dg_script tds on sr.script_catalog_id = tds.script_catalog_id left join t_dg_user u on u.user_id = sr.user_idwhere sr.status =1 GROUP BY sr.script_catalog_id;

2、使用子查询,先把子表分组并获取子表id,然后再左连接,拿出子表GROUP_CONCAT出来的id

selectsr.script_catalog_id,sr.name,sr.user_id,u.loginname,sr.create_time,sr.update_time,abc.sids,sr.statusFROM t_dg_script_catalog srleft join t_dg_user u on u.user_id = sr.user_idleft join(select script_catalog_id,GROUP_CONCAT(script_id) as sids from t_dg_script tds group by script_catalog_id ) abc on abc.script_catalog_id = sr.script_catalog_idwhere sr.status =1;

3、根据查询出来的字段分组,然后 GROUP_CONCAT拼接子表id

selectsr.script_catalog_id ,sr .name ,sr .user_id ,sr .create_time ,sr .update_time ,sr.status ,GROUP_CONCAT(tds.script_id) AS sidsFROM t_dg_script_catalog srleft join t_dg_script tds on sr.script_catalog_id = tds.script_catalog_id where sr.status =1group by sr.script_catalog_id ,sr .name ,sr .user_id ,sr .create_time ,sr .update_time ,sr.status;

结果:

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com