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

从MySQL JSON字段中提取去重城市列表的SQL查询

重点:数据库有一个城市字段,是一个json数组(["北京市", "上海市", "广州市"]),每条数据的城市可能重合,通过下面SQL可返回去重后的城市列表,mysql版本要5.7以上才支持。

SQL如下:

SELECT DISTINCT TRIM(JSON_UNQUOTE(JSON_EXTRACT(城市json字段名, CONCAT('$[', n.n, ']')))) AS cityFROM 表名JOIN (SELECT 0 AS n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4) nWHERE JSON_LENGTH(城市json字段名) > n.n;

上面sql中需要将城市json字段名替换为你的表中真实字段名以及将表名替换为你的真实表名。

如我的表名和字段名为:

最终SQL:
 

我的表数据如下:

可以发现有很多重复的城市数据,执行该SQL最终的结果为:
 

达到了去重的目的。

如果通过代码来去重的话,就麻烦很多,得拿到所有数据,再遍历,新建zset list存放去重后的城市列表,而通过sql的话就很省事了。

可能性能会差点,我1000条数据查询要0.04秒左右。

看一下执行计划:

需要全表扫描和临时表,我这还没加索引。

这篇分享文章就到这里啦!如果你对文章内容有疑问或想要深入讨论,欢迎在评论区留言,我会尽力回答。同时,如果你觉得这篇文章对你有帮助,不妨点个赞并分享给其他同学,让更多人受益。

想要了解更多相关知识,可以查看我以往的文章,其中有许多精彩内容。记得关注我,获取及时更新,我们可以一起学习、讨论技术,共同进步。

感谢你的阅读与支持,期待在未来的文章中与你再次相遇!

我的微信公众号:【xdub】,欢迎大家订阅,我会同步文章到公众号上。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Zabbix监控k8s云原生环境
  • 【Python爬虫系列】_016.关于登录和验证码
  • Redis - 主从复制
  • 2024年道路运输安全员考试题库及答案
  • COI实验室技能:图像到图像的深度学习开发框架(pytorch版)
  • 正点原子阿尔法ARM开发板-IMX6ULL(二)——介绍情况以及汇编
  • MFC工控项目实例之十四模拟量信号名称从文件读写
  • [论文笔记] ShortGPT Qwen2-0.5B-instruct Qwen2-1.5B-instruct 大模型剪枝
  • 【SQL】百题计划:SQL内置函数“LENGTH“的使用
  • 电脑丢失msvcp120.dll问题原因及详细介绍msvcp120.dll丢失的解决方法
  • DevOps实现CI/CD实战(七)- Jenkins集成k8s实现自动化CI
  • 前端Warning解决:多行文本省略号样式失效丢失,css
  • ERDAS实现根据矢量数据的一个属性字段,裁剪栅格并生成多个栅格文件
  • npm镜像源证书过期的问题解决
  • Linux学习-Ansible(二)
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • gops —— Go 程序诊断分析工具
  • Invalidate和postInvalidate的区别
  • Javascript弹出层-初探
  • javascript面向对象之创建对象
  • JavaScript中的对象个人分享
  • JS+CSS实现数字滚动
  • log4j2输出到kafka
  • mysql_config not found
  • Python连接Oracle
  • select2 取值 遍历 设置默认值
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • web标准化(下)
  • 驱动程序原理
  • 译自由幺半群
  • 云大使推广中的常见热门问题
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • ​【已解决】npm install​卡主不动的情况
  • # SpringBoot 如何让指定的Bean先加载
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • #单片机(TB6600驱动42步进电机)
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (003)SlickEdit Unity的补全
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (windows2012共享文件夹和防火墙设置
  • (差分)胡桃爱原石
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (亲测有效)推荐2024最新的免费漫画软件app,无广告,聚合全网资源!
  • (四)事件系统
  • (图文详解)小程序AppID申请以及在Hbuilderx中运行
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .net core + vue 搭建前后端分离的框架
  • .NET Core 2.1路线图
  • .NET 某和OA办公系统全局绕过漏洞分析
  • .net 托管代码与非托管代码
  • .net分布式压力测试工具(Beetle.DT)
  • .net开发日常笔记(持续更新)
  • /etc/sudoers (root权限管理)