mysql分组后合并显示一个字段的多条数据方式


Posted in MySQL onJanuary 22, 2022

mysql分组合并显示一个字段多条数据

首先我们有一张学生兴趣表(student_hobby),字段包括主键(id)、姓名(name)、兴趣(hobby)

表中数据如下

id name hobby
0 小明 篮球
1 小明 跑步
2 小华 读书

然后我们想让他显示成如下效果。

name hobbies
小明 篮球,跑步
小华 读书

那么我们可以使用如下SQL。

select name,group_concat(hobby separator ',') hobbies from student_hobbt group by name;

其中分隔符逗号也可以替换为其他想要使用的字符。

mysql多字段分组

mysql多字段分组

group by 语法

分组查询是对数据按照某个或多个字段进行分组,MYSQL中使用group by关键字对数据进行分组,基本语法形式为:

[GROUP BY 字段][HAVING <条件表达式>]

多字段分组

使用GROUP BY可以对多个字段进行分组,GROUP BY关键字后面跟需要分组的字段,MYSQL根据多字段的值来进行层次分组,分组层次从左到右,即先按照第1个字段分组,然后在第1个字段值相同的记录中,再根据第2个字段的值进行分组,以此类推。

GROUP BY与ORDER BY一起使用(分组排序)

某些情况下需要对分组进行排序,order by用来对查询的记录排序,如果和GROUP BY一起使用,就可以完成对分组的排序

例如下表:

mysql分组后合并显示一个字段的多条数据方式

将上表中数据按照wellid和年月的格式分组统计: 

sql语句:

select wellid,sum(number) as sum,DATE_FORMAT(time,'%Y-%m') as createTime 
from well 
GROUP BY wellid,createTime
order by createTime;

统计结果:

mysql分组后合并显示一个字段的多条数据方式

使用having过滤分组

GROUP BY可以和HAVING一起限定显示记录所需要满足的条件,只有满足条件的分组才会被显示 

还是上面张表,我们这次限定只要2020年12月之后的数据:

select wellid,sum(number) as sum,DATE_FORMAT(time,'%Y-%m') as createTime 
from well 
GROUP BY wellid,createTime
having createTime>'2020-12'
order by createTime;

查询结果:

mysql分组后合并显示一个字段的多条数据方式

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

MySQL 相关文章推荐
MySQL Innodb关键特性之插入缓冲(insert buffer)
Apr 08 MySQL
MySQL CHAR和VARCHAR该如何选择
May 31 MySQL
MySQL 常见的数据表设计误区汇总
Jun 07 MySQL
MySQL快速插入一亿测试数据
Jun 23 MySQL
MySQL系列之十五 MySQL常用配置和性能压力测试
Jul 02 MySQL
MySQL 四种连接和多表查询详解
Jul 16 MySQL
MySQL里面的子查询的基本使用
Aug 02 MySQL
MySQL into_Mysql中replace与replace into用法案例详解
Sep 14 MySQL
MySQL 开窗函数
Feb 15 MySQL
MySQL插入数据与查询数据
Mar 25 MySQL
MySQL脏读,幻读和不可重复读
May 11 MySQL
mysql全面解析json/数组
Jul 07 MySQL
MySQL中int (10) 和 int (11) 的区别
Jan 22 #MySQL
JMeter对MySQL数据库进行压力测试的实现步骤
MySQL创建定时任务
Jan 22 #MySQL
SQL基础查询和LINQ集成化查询
Jan 18 #MySQL
MySQL常见优化方案汇总
Jan 18 #MySQL
mysql sum(if())和count(if())的用法说明
SQL语法CONSTRAINT约束操作详情
Jan 18 #MySQL
You might like
PHP中strlen()和mb_strlen()的区别浅析
2014/06/19 PHP
ThinkPHP3.1.3版本新特性概述
2014/06/19 PHP
PHP 导出Excel示例分享
2014/08/18 PHP
PHP实现的回溯算法示例
2017/08/15 PHP
深入理解PHP+Mysql分布式事务与解决方案
2020/12/03 PHP
THINKPHP-Apache服务器中使用Alias虚拟目录URL重写 隐藏index.php
2021/03/09 PHP
php图像生成函数之间的区别分析
2012/12/06 Javascript
JavaScript中的document.referrer在各种浏览器测试结果
2014/07/18 Javascript
IE下使用jQuery重置iframe地址时内存泄露问题解决办法
2015/02/05 Javascript
JS+CSS实现滑动切换tab菜单效果
2015/08/25 Javascript
谈谈我对JavaScript DOM事件的理解
2015/12/18 Javascript
JS留言功能的简单实现案例(推荐)
2016/06/23 Javascript
详解微信小程序 相对定位和绝对定位
2017/05/11 Javascript
windows下更新npm和node的方法
2017/11/30 Javascript
在Vue中使用highCharts绘制3d饼图的方法
2018/02/08 Javascript
微信小程序之批量上传并压缩图片的实例代码
2018/07/05 Javascript
js中实例与对象的区别讲解
2019/01/21 Javascript
基于html+css+js实现简易计算器代码实例
2020/02/28 Javascript
使用Vue Composition API写出清晰、可扩展的表单实现
2020/06/10 Javascript
详解vue 组件
2020/06/11 Javascript
基于Web Audio API实现音频可视化效果
2020/06/12 Javascript
JavaScript 实现轮播图特效的示例
2020/11/05 Javascript
Python笔记(叁)继续学习
2012/10/24 Python
python 类详解及简单实例
2017/03/24 Python
django开发之settings.py中变量的全局引用详解
2017/03/29 Python
Python实现自动上京东抢手机
2018/02/06 Python
在pycharm上mongodb配置及可视化设置方法
2018/11/30 Python
Django之模板层的实现代码
2019/09/09 Python
日本最大的旅游网站:Rakuten Travel(乐天旅游)
2018/08/02 全球购物
Java的for语句中break, continue和return的区别
2013/12/19 面试题
公司年会晚宴演讲稿
2014/01/06 职场文书
幼儿园中班新学期寄语
2014/01/18 职场文书
中秋节寄语2015
2015/03/24 职场文书
python爬取网页版QQ空间,生成各类图表
2021/06/02 Python
SQL Server #{}可以防止SQL注入
2022/05/11 SQL Server
使用Cargo工具高效创建Rust项目
2022/08/14 Javascript