GROUP_CONCAT函数用于将GROUP BY产生的同一个分组中的值连接起来,返回一个字符串结果

GROUP_CONCAT函数首先根据GROUP BY指定的列进行分组,将同一组的列显示出来,并且用分隔符分隔,由函数参数(字段名)决定要返回的列

语法结构

GROUP_CONCAT([DISTINCT] 要连接的字段 [ORDER BY 排序字段 ASC/DESC] [SEPARATOR '分隔符'])

说明:

(1) 使用DISTINCT可以排除重复值

(2) 如果需要对结果中的值进行排序,可以使用ORDER BY子句

(3) SEPARATOR '分隔符'是一个字符串值,默认为逗号

导入数据

DROP TABLE IF EXISTS `spend`;
CREATE TABLE `spend` (`id` int(11) NOT NULL AUTO_INCREMENT,`buyer` varchar(255) DEFAULT NULL,`spending` int(11) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4;INSERT INTO `spend` VALUES ('1', 'Odin', '50');
INSERT INTO `spend` VALUES ('2', 'Odin', '50');
INSERT INTO `spend` VALUES ('3', 'Odin', '60');
INSERT INTO `spend` VALUES ('4', 'Odin', '70');
INSERT INTO `spend` VALUES ('5', 'Jack', '100');
INSERT INTO `spend` VALUES ('6', 'Jack', '110');
INSERT INTO `spend` VALUES ('7', 'Mark', '150');
INSERT INTO `spend` VALUES ('8', 'Mark', '150');

spend表

下列进行用法演示:

SELECT buyer, spending FROM spend;

结果展示:

1.直接使用GROUP_CONCAT(字段名)

SELECT GROUP_CONCAT(spending) FROM spend;

结果展示:

2.以buyer进行分组,把spending字段的值在同一行打印出来,逗号分隔(默认)

SELECT buyer,GROUP_CONCAT(spending)
FROM spend
GROUP BY buyer;

结果展示:

3. 以buyer进行分组,把spending字段的值在同一行打印出来,'+'加号分隔

SELECT buyer,GROUP_CONCAT(spending SEPARATOR '+')
FROM spend
GROUP BY buyer;

结果展示:

4.以buyer进行分组,把去除重复冗余的spending字段的值打印在同一行,'+'加号分隔

SELECT buyer,GROUP_CONCAT(DISTINCT spending SEPARATOR '+')
FROM spend
GROUP BY buyer;

结果展示:

5.以buyer进行分组,把去除重复冗余的spending字段的值打印在同一行,'+'加号分隔,按照  spending倒序排列

SELECT buyer,GROUP_CONCAT(DISTINCT spending ORDER BY spending DESC SEPARATOR '+')
FROM spend
GROUP BY buyer;

结果展示:

扩展案例

导入数据

DROP TABLE IF EXISTS game_ranking;
CREATE TABLE game_ranking(
game VARCHAR(8),
category VARCHAR(16),
downloads INT(8)
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8;
INSERT INTO
game_ranking (game,category,downloads)
VALUE ('A','puzzle',13628) ,('B','shooting',2830) ,('C','shooting',1920) ,('D','action',23800) ,('E','puzzle',842) ,('F','shooting',48201) ,('G','action',4532) ,('H','puzzle',1028) ,('I','action',48910) ,('J','shooting',342) ,('K','puzzle',32456) ,('L','action',2801) ,('M','puzzle',1248),('N','action',8756);

game_ranking表 (游戏下载量排行表)

game: 游戏名称 (字段类型: VARCHAR)

category: 游戏类别 (字段类型: VARCHAR)

downloads: 游戏下载量 (字段类型: INT)

问题: 查询每个类别下载量排在前两名的游戏,输出内容包括: category(游戏类别),game(游戏名称)

解题思路: 通过分组统计,在每组内按照游戏下载量降序排列并使用GROUP_CONCAT函数进行连接,然后使用SUBSTRING_INDEX函数取出前两个游戏名称即可得到结果

SELECT category,SUBSTRING_INDEX(GROUP_CONCAT(game ORDER BY downloads DESC),',',2)AS game
FROM game_ranking
GROUP BY category;

结果展示:

[Mysql] GROUP_CONCAT函数相关推荐

  1. MySQL group_concat()函数

    转载自  MySQL group_concat()函数 MySQL GROUP_CONCAT函数介绍 MySQL GROUP_CONCAT()函数将组中的字符串连接成为具有各种选项的单个字符串. 下面 ...

  2. mysql group concat 去重,MySQL group_concat() 函数用法

    MySQL group_concat() 函数用法 在使用 group by对数据进行分组后,如果需要对 select 的数据项进行字符串拼接,这时就需要用到group_concat()函数. 1.基 ...

  3. MySQL group_concat函数使用详解

    「作者主页」:士别三日wyx 「作者简介」:CSDN top100.阿里云博客专家.华为云享专家.网络安全领域优质创作者 「专栏简介」:此文章已录入专栏<MySQL数据库快速入门> gro ...

  4. MySQL GROUP_CONCAT()函数的排序方法

    1. 用法 GROUP_CONCAT() 函数的参数是可以直接使用 ORDER BY 排序的. 2. 例子 1.  表中数据如下: id  username  score 1    张三        ...

  5. MYSQL group_concat函数作用

    现在加入有以下数据 id name 1 小猫 2 木头 1 小狗 1 小兔 此时如果进行和合并 就可使用 group_concat 函数 达到效果为: id name 1 小猫,小狗,小兔 2 木头 ...

  6. mysql中group concat_mysql中group_concat()函数的使用方法总结

    本文实例讲述了mysql group_concat()函数用法.分享给大家供大家参考,具体如下: group_concat(),手册上说明:该函数返回带有来自一个组的连接的非NULL值的字符串结果.比 ...

  7. mysql group_concat去重_MySQL group_concat() 函数用法

    MySQL group_concat() 函数用法 在使用 group by对数据进行分组后,如果需要对 select 的数据项进行字符串拼接,这时就需要用到group_concat()函数. 1.基 ...

  8. mysql group_concat去重_mysql GROUP_CONCAT 函数 将相同的键的多个单元格合并到一个单元格...

    mysql GROUP_CONCAT 函数 将相同的键的多个单元格合并到一个单元格 MemberID MemberName FruitName -------------- ------------- ...

  9. mysql group concat_mysql group_concat()函数用法总结

    本文实例讲述了mysql group_concat()函数用法.分享给大家供大家参考,具体如下: group_concat(),手册上说明:该函数返回带有来自一个组的连接的非NULL值的字符串结果.比 ...

最新文章

  1. php将url出现 双斜杠,php-URL重写在末尾添加斜杠会破坏我的css链接
  2. 架构:Android 组件化开发
  3. Linux指令not found
  4. Buildroot 龙芯1C支持指南
  5. Socket网络编程--简单Web服务器(6)
  6. js 禁止android手机返回键,js禁止浏览器,微信,及手机物理键的返回
  7. 华为服务器u盘装linux_华为matebook14双系统(deepin15.11+win10)新体验!
  8. UVA 10391 - Compound Words
  9. vue-cli3.x中使用axios发送请求,配合webpack中的devServer编写本地mock数据接口(get/post/put/delete)...
  10. 17.卷2(进程间通信)---后记
  11. Matlab取整函数: fix, floor, ceil, round.
  12. 读书笔记:陈希孺:概率论与数理统计:2014.01.02
  13. Word1——word 2016(笔记本预装)安装MathType 7教程
  14. 【电子签章】HTML格式合同转化成PDF文件
  15. 如何在腾讯云学生服务器搭建个人网站——配置web开发环境详细步骤
  16. 如果我来做个「ZAO」换脸 app,全网最硬核换脸技术简析 (万字长文)
  17. 【亲测有效】Ubuntu系统开机速度慢解决办法
  18. 利用Lightroom添加边框及批量导出
  19. excel 点击 计数_跟踪Excel计数功能
  20. 简单说下每一层对应的网络协议有哪些?

热门文章

  1. python怎么输出1到100的数字集合_python 如何将一系列数字十个一行输出
  2. TZC 1283: 简单排序 —— 插入排序
  3. 三国杀虎牢关模式玩家心得及详细攻略
  4. 权健产品被各大电商平台全线下架 / 中国北斗系统开始服务全球 / 小米互联网洗衣机发布 | 雷锋早报... 1
  5. java编写数据处理excel的可视化jar包程序
  6. Vue脚手架查看隐藏配置文件
  7. Python 批量鉴别审核黄图
  8. 1676F - Longest Strike
  9. 入手评测 荣耀50和华为p50选哪个
  10. 新浪微博Android客户端学习记录一:完成Logo界面