报表下钻踩坑:GROUP_CONCAT 长度限制导致数据丢失,改用 JSON_ARRAYAGG
📅 2026/7/23 21:17:55
👁️ 次浏览
目录一、问题出现二、原因分析三、为什么下钻场景特别容易发现四、解决方案原方案修改方案五、为什么 JSON_ARRAYAGG 更适合下钻六、修改后的 SQL七、注意事项八、总结背景在开发财务报表、欠费分析等统计类功能时经常会有这样的需求汇总页面展示统计数据点击某一行后下钻查看该分类下所有明细数据。例如欠费账龄分析项目A 欠费资源数5000个 欠费金额100000元用户点击项目A需要进入明细页面资源1 资源2 资源3 ... 资源5000实现方式通常是在汇总 SQL 中提前聚合资源 IDGROUP_CONCAT(DISTINCTtmp.fld_object_guid)ASfldObjectGuidsStr然后下钻时wherefld_object_guidin(...)根据这些 ID 查询明细。一、问题出现测试数据量较小时GROUP_CONCAT(DISTINCTfld_object_guid)返回正常10001,10002,10003,10004下钻查询select*fromes_charge_owner_feewherefld_object_guidin(10001,10002,10003,10004)结果正常。但是生产环境某些项目资源量较大例如一个区域 20000个资源执行GROUP_CONCAT(DISTINCTfld_object_guid)发现汇总数量资源数20000但是下钻明细只有几千条二、原因分析查看 SQLGROUP_CONCAT(DISTINCTtmp.fld_object_guid)发现问题。MySQL 对GROUP_CONCAT有长度限制group_concat_max_len默认1024查看SHOWVARIABLESLIKEgroup_concat_max_len;当聚合结果超过限制MySQL 不会报错。而是直接截断后面的内容。例如实际应该1001,1002,1003,1004,1005......9999但是因为超过长度实际返回1001,1002,1003,1004......1200后面的资源 ID 全部丢失。三、为什么下钻场景特别容易发现普通列表可能只是展示资源数量20000用户感觉正常。但是下钻依赖汇总数据 ↓ 资源ID集合 ↓ 明细查询一旦 ID 集合被截断会出现汇总数量 ≠ 下钻数量例如项目汇总资源数下钻资源数项目A200001024业务人员会认为报表数据不准确。实际上统计 SQL 没问题。问题出在资源 ID 聚合阶段。四、解决方案原方案GROUP_CONCAT(DISTINCTtmp.fld_object_guid)ASfldObjectGuidsStr返回10001,10002,10003本质字符串。修改方案使用JSON_ARRAYAGG()修改JSON_ARRAYAGG(tmp.fld_object_guid)ASfldObjectGuidsStr返回[10001,10002,10003]由数据库直接返回数组结构。五、为什么 JSON_ARRAYAGG 更适合下钻下钻本质需要传递一批资源ID它不是文本。它是集合。以前10001,10002,10003实际上是假装数组。现在[10001,10002,10003]数据结构更加匹配。六、修改后的 SQL原SELECTtmp.fld_area_guid,COUNT(DISTINCTtmp.fld_object_guid)ASfldResourceCount,GROUP_CONCAT(DISTINCTtmp.fld_object_guid)ASfldObjectGuidsStrFROMtmpGROUPBYtmp.fld_area_guid;修改SELECTtmp.fld_area_guid,COUNT(DISTINCTtmp.fld_object_guid)ASfldResourceCount,JSON_ARRAYAGG(tmp.fld_object_guid)ASfldObjectGuidsStrFROMtmpGROUPBYtmp.fld_area_guid;七、注意事项如果之前GROUP_CONCAT(DISTINCTid)需要去重。而JSON_ARRAYAGG()本身不支持JSON_ARRAYAGG(DISTINCTid)需要提前去重SELECTfld_area_guid,JSON_ARRAYAGG(fld_object_guid)FROM(SELECTDISTINCTfld_area_guid,fld_object_guidFROMtmp)tGROUPBYfld_area_guid;八、总结这次问题本质不是 SQL 统计错误。而是使用 GROUP_CONCAT 保存大量 ID 集合在下钻场景中触发长度限制导致 ID 被截断。对于报表汇总数据下钻大批量资源查询ID 集合传递不要使用GROUP_CONCAT()建议使用JSON_ARRAYAGG()让数据库返回真正的集合结构避免因为字符串长度限制导致隐藏的数据丢失问题。一句话总结GROUP_CONCAT 适合展示拼接文本不适合承载下钻所需的大规模 ID 集合报表下钻场景应优先考虑 JSON_ARRAYAGG避免因 group_concat_max_len 限制造成明细数据缺失。
1.let、var、constvar 存在变量提升,只提升声明,不提升赋值;变量提升:var 有变量提升;let/const 同样提升,但存在暂时性死区,声明前无法访问;作用域:var 仅函数 / 全局作…
📅 2026/7/23 21:16:55
本文仅展示核心实现逻辑与部分代码片段,完整项目源码、配套文档、数据库脚本内容较多,篇幅有限无法全部放出。 有需要完整资源的同学,可以在评论区留言【资料或领源码】,我会一 一回复站内私信,发送完整文件 摘 要 在…
📅 2026/7/23 21:16:55
高校数据治理建设过程中常见的形式主义表现有哪些?
当前不少高校的数据治理项目存在重展示轻应用的问题,投入大量成本搭建的可视化大屏仅用于参观展示,无法支撑一线业务部门的实际工作需求,最终陷入“建完即闲置”的困境。这类项…
📅 2026/7/23 21:16:55
做工程这行,最怕的不是累,是踩坑。尤其是搞geo teck这种听起来高大上、实际上水极深的东西。我在这行摸爬滚打八年,见过太多老板因为不懂行,被那些吹得天花乱坠的供应商坑得底裤都不剩。今天不整那些虚头巴脑的理论,就聊聊我亲身经历的几个真事儿,希望能给想入局或者正在…
📅 2026/7/23 22:30:03
摘要在智慧水利数字化转型全面推进的行业背景下,传统接触式水位监测设备存在易淤堵、运维成本高、极端天气观测安全风险大、无实景佐证等短板,已难以满足河道、水库、灌区、城市内涝等多场景精细化水文管控需求。本文围绕AI视觉水位监测这套非接触式全自…
📅 2026/7/23 22:30:21
PVC材质凭借柔韧耐磨、性价比突出的优势,广泛应用于各类鞋材生产加工领域,但PVC树脂在高温塑化、注塑发泡等加工工序中,容易出现分解变色、材质脆化、物料析出等问题,直接影响鞋材成品质量与使用寿命,而PVC鞋材稳定剂(…
📅 2026/7/23 22:30:21
文章目录子序列(一维dp数组)题目 最长递增子序列题目 摆动序列题目:最长递增子序列的个数回文子串(二维dp数组)题目:字符串中,回文子串的个数题目:回文串分割题目:最小切…
📅 2026/7/23 22:30:21
👇 华硕商城 👇 学生服务包套餐享学生价数码补贴至高立减15%
关注ASUS华硕官方账号了解更多惊喜福利#ROG音响#桌面升级#硬核#ROG
📅 2026/7/23 22:30:21
更多请点击:
https://intelliparadigm.com
第一章:AI数字人形象定制如何做到“一秒辨真伪”? 在高保真AI数字人构建中,“一秒辨真伪”并非追求绝对不可分辨,而是通过多维度感知一致性实现人类视觉与认知系统的瞬时信任…
📅 2026/7/23 22:29:20
更多请点击:
https://intelliparadigm.com
第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…
📅 2026/7/23 0:00:26
最近好多同行在群里问 geo s1230 到底值不值得买。说实话,这机器在二手市场挺火。但水很深,新手很容易踩雷。我干了十年设备维护,见过太多冤大头。今天不扯虚的,直接上干货。先说价格,心里得有底。目前成色不错的二手货,大概在一万二到一万五之间。如果低于八千,别犹豫,…
📅 2026/7/23 0:01:16
更多请点击:
https://codechina.net
第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现࿱…
📅 2026/7/23 0:01:26
1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…
📅 2026/7/23 1:06:38
1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…
📅 2026/7/23 1:06:38
更多请点击:
https://intelliparadigm.com
第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…
📅 2026/7/23 1:06:38
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/23 7:06:56
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/23 17:07:28
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/23 5:06:50