mysql left join group_concat 主表丢失数据

问题出现的场景:

有一个主表 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;

结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/464530.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring 中循环依赖 三级缓存

在Spring框架中,循环依赖是一个常见的问题,它指的是两个或多个Bean之间互相依赖,形成一个闭环,导致无法准确地完成对象的创建和初始化。为了解决这个问题,Spring引入了三级缓存机制。以下是对Spring中循环依赖和三级缓…

新能源汽车与公共充电桩布局

近年来,全球范围内对新能源汽车产业的推动力度不断增强,中国新能源汽车市场也呈现蓬勃发展的势头,在政策与市场的共同推动下,新能源汽车销量持续增长。然而,据中国充电联盟数据显示,充电基础设施建设滞后于新能源汽车数量增长的现状导致充电桩供需不平衡,公共充电桩服务空白区域…

【深度学习基础】常用图像卷积核类型

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀深度学习_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2. 常…

一二三应用开发平台自定义查询设计与实现系列3——通用化重构

通用化重构 前面我们以一个实体为目标对象,完成了功能开发与调试。 在此基础上,我们对功能进行重构,使其成为平台的标准化、通用化的功能。 前端重构 首先,先把自定义组件挪到了平台公共组件目录下,如下&#xff1…

RabbitMQ交换机类型

RabbitMQ交换机类型 1、RabbitMQ工作模型2、RabbitMQ交换机类型2.1、Fanout Exchange(扇形)2.1.1、介绍2.1.2、示例2.1.2.1、生产者2.1.2.2、消费者2.1.2.3、测试 2.2、Direct Exchange(直连)2.2.1、介绍2.2.2、示例2.2.2.1、生产…

qt QMenuBar详解

1、概述 QMenuBar是Qt框架中用于创建菜单栏的类,它继承自QWidget。QMenuBar通常位于QMainWindow对象的标题栏下方,用于组织和管理多个QMenu(菜单)和QAction(动作)。菜单栏提供了一个水平排列的容器&#x…

数据转换 | Matlab基于SP符号递归图(Symbolic recurrence plots)一维数据转二维图像方法

目录 基本介绍程序设计参考资料获取方式 基本介绍 Matlab基于SP符号递归图(Symbolic recurrence plots)一维数据转二维图像方法 符号递归图(Symbolic recurrence plots)是一种一维时间序列转图像的技术,可用于平稳和非平稳数据集;对噪声具有…

特殊矩阵的压缩存储

一维数组的存储结构 ElemType arr[10]; 各数组元素大小相同,且物理上连续存放。 数组元素a[i]的存放地址 LOC i * sizeof(ElemType)。(LOC为起始地址) 二维数组的存储结构 ElemType b[2][4];二维数组也具有随机存取的特性(需…

MySQL utf8mb3 和 utf8mb4引发的问题

问题描述 Cause: java.sql.SQLException: Incorrect string value: \xF4\x8F\xBB\xBF-b... for column sddd_aaa_ark at row 1 sddd_aaa_ark 存储中文字符时,出现上述问题 原因分析 sddd_aaa_ark在数据库中结构是 utf8字符的最大字节数是3 byte,但是某些…

RK3568开发板Openwrt文件系统构建

RK3568开发板Openwrt文件系统构建 iTOP-RK3568开发板使用教程更新,后续资料会不断更新,不断完善,帮助用户快速入门,大大提升研发速度。 本次更新内容为《iTOP-3568开发板文件系统构建手册》,对Openwrt文件系统的编译…

Linux之crontab使用

一,查看cron是否已经在运行 查看crontab的运行状态 sudo service cron statussystemctl status cron 开启crontab: sudo service cron startsudo service cron restart 二,编辑cron定时任务 crontab -e加入你自己的命令,定时跑脚本&a…

OpenEuler 使用ffmpeg x11grab捕获屏幕流,rtsp推流,并用vlc播放

环境准备 安装x11grab(用于捕获屏幕流)和libx264(用于编码) # 基础开发环境&x11grab sudo dnf install -y \autoconf \automake \bzip2 \bzip2-devel \cmake \freetype-devel \gcc \gcc-c \git \libtool \make \mercurial \pkgconfig \zlib-devel \libX11-devel \libXext…

矩阵的奇异值分解SVD

为了论述矩阵的奇异值与奇异值分解!需要下面的结论!

H5开发指南|掌握核心技术,玩转私域营销利器

随着互联网技术的不断发展和用户需求的日益增长,H5页面逐渐成为了企业和个人展示信息、吸引用户关注的重要手段。具有跨平台兼容性强、网页链接分享、更新迭代方便快捷、低开发成本、可搜索和优化、数据分析与追踪、灵活性与扩展性以及无需下载安装等特点。不仅可以…

Ubuntu Linux

背景 Ubuntu起源于南非,其名称“Ubuntu”来源于非洲南部祖鲁语或豪萨语,意为“人性”、“我的存在是因为大家的存在”,这体现了非洲传统的一种价值观。Ubuntu由南非计算机科学家马克沙特尔沃斯(Mark Shuttleworth)创办…

你适合哪种tiktok广告账户类型?

TikTok在广告营销方面的分类体系极为详尽。在开设广告账户时,根据不同的海外市场和商品类型,TikTok会有各自的开户标准。此外,广告主所开设的TikTok广告账户类型会直接影响其可投放的广告类型。在广告出价方面,广告主的营销目标不…

平衡者:陈欣的宇宙使命

第一章 异象初现 2145年,地球已经不再是人类唯一的家园。随着科技的飞速发展,人类在银河系内建立了多个殖民星球。然而,这些新世界的繁荣背后隐藏着一个巨大的危机——各个星球之间的资源分配不均,导致了严重的社会动荡和冲突。 …

《AI产品经理手册》——解锁AI时代的商业密钥

在当今这个日新月异的AI时代,每一位产品经理都面临着前所未有的挑战与机遇,唯有紧跟时代潮流,深入掌握AI技术的精髓,才能在激烈的市场竞争中独占鳌头。《AI产品经理手册》正是这样一部为AI产品经理量身定制的实战宝典,…

React第十三章(useTransition)

useTransition useTransition 是 React 18 中引入的一个 Hook,用于管理 UI 中的过渡状态,特别是在处理长时间运行的状态更新时。它允许你将某些更新标记为“过渡”状态,这样 React 可以优先处理更重要的更新,比如用户输入&#x…

使用wordcloud与jieba库制作词云图

目录 一、WordCloud库 例子: 结果: 二、Jieba库 两个基本方法 jieba.cut() jieba.cut_for_serch() 关键字提取: jieba.analyse包 extract_tags() 一、WordCloud库 词云图,以视觉效果提现关键词,可以过滤文本…