3分钟短文 | MySQL在分组时,把多列合并为一个字段!
时间:2022-07-23
本文章向大家介绍3分钟短文 | MySQL在分组时,把多列合并为一个字段!,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
引言
今天我们来说一个MySQL查询的例子,比如有一个统计需求, 分组后的数据,我们知道只能使用聚合函数进行统计, 那如果要根据分组约定,将一系列的值合并到单个字段显示出来, 应该怎么写呢?
学习时间
首先我们准备数据,有一个用户喜好表,记录了用户的喜好。比如这样:
SELECT hobbies FROM peoples_hobbies WHERE person_id = 5;
结果很多行数据:
shopping
fishing
coding
那么问题来了,如果需要的输出类似于
shopping, fishing, coding
一行展示就够了,不要多行展示,应该怎么写呢?或者说MySQL有没有这个能力处理呢?
当然是有的。MySQL贴心地给出了 GROUP_CONCAT 函数,用于使用分隔符连接多行字段的值。比如说按照 person_id 进行分组,然后第二列输出用户喜好,使用逗号分隔符:
SELECT person_id, GROUP_CONCAT(hobbies SEPARATOR ', ') AS all_hobbies FROM peoples_hobbies GROUP BY person_id;
当然了,peoples_hobbies 表完全有可能在 hobbies 字段有重复的值,我们也可以进行唯一性筛选。把上述SQL语句改造一下:
SELECT person_id, GROUP_CONCAT(DISTINCT hobbies SEPARATOR ', ') AS all_hobbies FROM peoples_hobbies GROUP BY person_id;
写到这里基本上已经可以满足使用了。可是我们还可以再进一步。比如对我们的输出字段进行排序后再使用分隔符连接。
SELECT person_id, GROUP_CONCAT(hobbies ORDER BY hobbies ASC SEPARATOR ', ') AS all_hobbies FROM peoples_hobbies GROUP BY person_id;
- 对象的序列化和反序列化
- java父类,子类静态块和构造方法的执行顺序
- 一键换肤的简单实现
- mybatis配置文件模板(增删查改)
- MD5加密代码(工具类)
- lambda+reduce的一句艰深代码
- CRT连接mysql数据库操作
- 基于springMVC拦截器实现操作日志统计
- datepicker小插件(日期时间 & 日期 & 月份)
- 封装好的MAP工具类和HBASE工具类
- JSP+ajax+springMVC+MayBatis处理excel上传导入
- 绚丽的javascript拾色器(不兼容IE8及以下)
- 魔波广告恶意病毒简析
- javascript生成.xls文件(兼容IE&Chrome&Firefox)
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- Datatables获取选中行的某一列的数据
- 终于懂了建造者模式
- (力扣)面试题04. 二维数组中的查找
- 一条命令查询电脑多久没关机
- Android Studio无法运行程序调试程序出现Unable to connect to ADB.Check the Event Log for possible issues.Verify th
- MySQL 中的 DML 语句执行流程,你理解的跟我一样吗?
- Android SharedPreferences的使用
- 【DB笔试面试846】在Oracle中,TWO_TASK环境变量的作用是什么?
- 分治策略之归并排序(Python实现)
- 分治策略之最大子数组(Python实现)
- 如何利用Gitlab-CI持续部署到远程机器?
- 动态规划之钢条切割问题:自顶向下(Python实现)
- 动态规划之钢条切割问题:自低向上(Python实现)
- Docker中安装Centos7操作系统
- 机器重启后 docker 容器启动报错 error creating overlay mount to