当前位置: 首页 > news >正文

MySQL8查询某个JSON类型的字段中出现过的所有键名(json key name)并去重返回

假设我有一张表叫 t1, 其中有一个字段 info 是 JSON类型,现在我想查询 t1.info 字段中出现过的所有键名,MySQL提供了一个函数 JSON_KEYS(column) 来返回单条数据单个JSON字段中的所有键名组成的集合,那我想查询整个表所有记录中某个JSON字段出现的键名组成的集合并做去重之后的结果,该如何查询呢,某大模型给出的答案我尝试下来会报错,原因可能是MySQL版本问题,我没去深究:
在这里插入图片描述
在这里插入图片描述

这里提供另一种我尝试可行的方式供参考:

SELECT DISTINCT(b.info_key) FROM t1 JOIN 
JSON_TABLE(JSON_KEYS(info), '$[*]' COLUMNS (info_key VARCHAR(255) PATH '$')
) b;

在这里插入图片描述

先利用JSON_KEYS()返回单条记录中某个JSON字段的所有键名组成的数组,再利用 JSON_TABLE 函数把键名数组中的每一个元素展开当作一张临时表的一条记录,这样就可以方便的使用 DISTINCT 进行去重了。

相关文章:

  • conda虚拟环境相关操作
  • 第三章:langchain加载word文档构建RAG检索教程(基于FAISS库为例)
  • Spring Boot项目集成Aviator实现成本计算模块
  • 【阿里云大模型高级工程师ACP习题集】3 总结与展望
  • vscode远程服务器连接----过程尝试写入的管道不存在
  • 修改MySQL枚举类型添加‘location‘值
  • 【AI】Ubuntu 22.04 evalscope 模型评测 Qwen3-4B-FP8
  • Linux——https基础理论
  • 【AI论文】FormalMATH:大型语言模型形式化数学推理能力基准测试
  • C语言内存函数及大小端字节序!
  • Mysql order by 用法
  • Vue + Element UI 表单弹窗输入法卡顿问题解决方案
  • 用 Tailwind CSS 优化你的 Vue 3 项目! ! !
  • 计算机硬件:AMD X670E与B650主板的PCIe通道分配
  • 在 Laravel 12 中实现 WebSocket 通信时进行身份验证
  • 水质监控预警管理平台
  • 构建 Web 浏览 AI Agent:Pydantic + MCP 实现指南
  • C#学习第21天:安全与加密(Security and Cryptography)
  • Linux/AndroidOS中进程间的通信线程间的同步 - 虚拟内存操作
  • 企业级RAG架构设计:从FAISS索引到HyDE优化的全链路拆解,金融/医疗领域RAG落地案例与避坑指南(附架构图)
  • 降准又降息!央行发布3类10项措施
  • 1101名优秀运动员拟保送,全红婵、黄雨婷、盛李豪在列
  • 新华每日电讯头版聚焦上海:科创高地向未来
  • 谢震业领衔挑战世界顶尖高手,这场长三角田径钻石赛值得期待
  • 2025上海车展圆满闭幕,共接待海内外观众101万人次
  • 履新宿州市政府党组书记后,任东暗访五一假期安全生产工作