我的编程空间,编程开发者的网络收藏夹
学习永远不晚

[Mysql] GROUP_CONCAT函数

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

[Mysql] GROUP_CONCAT函数

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;

结果展示:

直接使用GROUP_CONCAT(字段名)

SELECT GROUP_CONCAT(spending) FROM spend;

结果展示:

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

SELECT buyer,GROUP_CONCAT(spending) FROM spendGROUP BY buyer;

结果展示:

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

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

结果展示:

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

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

结果展示:

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

SELECT buyer,       GROUP_CONCAT(DISTINCT spending ORDER BY spending DESC SEPARATOR '+') FROM spendGROUP 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;

结果展示:

来源地址:https://blog.csdn.net/Hudas/article/details/124120288

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

[Mysql] GROUP_CONCAT函数

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL函数CONCAT、CONCAT_WS、GROUP_CONCAT用法详解

目录mysql函数CONCAT、CONCAT_WS、GROUP_CONCAT1.concat()函数2.concat_ws()函数3.group_concat()函数补充:Mysql concat_ws、concat函数使用一、概念 con
2023-02-14

SQL函数Group_concat如何使用

本篇内容介绍了“SQL函数Group_concat如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!SQL函数Group_concat的
2023-03-06

SQL函数实现Group_concat用法

目录完整语法:还有几种扩展:完整语法:group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator 分隔符])SELECT * FROM `spythonqltes
SQL函数实现Group_concat用法
2024-08-26

SQL函数Group_concat的用法及说明

目录SQL函数Group_concat的用法完整语法如下Group_concat函数长度问题解决的方式有三个总结SQL函数Group_concat的用法完整语法如下group_concat([DISTINCT] 要连接的字段 [Orde
2023-03-02

mysql group_concat长度问题

group_concat  默认长度是1024所以如果太长的话要修改默认值。查询是SELECT **@@global**.group_concat_max_len;修改是SET GLOBAL group_concat_max_len=102400;但这种方法m
mysql   group_concat长度问题
2018-05-08

Mysql实现合并多个分组(GROUP_CONCAT及其平替函数)

目录1. mysql 中的 GROUP_CONCAT 函数1.1 GROUP_CONCAT 函数1.2 CONCAT_WS 函数2. 功能类似的方法2.1 CONCAT 函数2.2 GROUP_CONCAT 和 CONCAT 的区别3. 总
2023-10-11

sql中group_concat函数的用法是什么

GROUP_CONCAT函数是用来将多行数据按照指定的分隔符合并成一行的字符串。它的语法如下:GROUP_CONCAT([DISTINCT] expr [, expr ...][ORDER BY {unsigned_integer | c
sql中group_concat函数的用法是什么
2024-04-09

sql中group_concat函数的作用是什么

GROUP_CONCAT函数用于将多个行的值连接在一起,生成一个字符串。它可以按照指定的顺序连接多个行的值,并使用指定的分隔符分隔每个值。常用于在查询结果中将多个行的值合并为一个字符串。例如,假设有一个名为students的表,包含以下数
sql中group_concat函数的作用是什么
2024-04-09

MySQL GROUP_CONCAT限制解决方案

作用:GROUP_CONCAT函数可以拼接某个字段值成字符串,默认的分隔符是 逗号,即"," ,如果需要自定义分隔符可以使用 SEPARATOR如: SELECT GROUP_CONCAT(name SEPARATOR '_') FROM
2022-05-16

编程热搜

目录