MySQL如何分组拼接字符串?

article/2025/9/20 15:10:54

上一篇文章 跨表更新,看到自己写的SQL像个憨憨 写了关于跨表个更新的内容。一年过的很快,文中后来的两位员工 馮大馮二 也要面对无情的 KPI 考核了,他们工作干的很不错,performance 分别是 4 和 5


新需求来了,静悄悄的来了! ! ! 领导想要查看每个 performance 下都有谁,同时要求将这些人的名称要逗号拼接成一个字符串,也就是说要得到下面的结果:

要将结果集中某个指定的列进行字符串拼接,这要怎么做呢?主角闪亮✨登场

GROUP_CONCAT(expr)

在 Mysql 官方文档 中,该函数被放在聚合函数章节,如果你要按照指定字段分组拼接,就要配合关键字 GROUP BY 来使用的

定义

该函数返回一个字符串结果,该字符串结果是通过分组串联的非NULL值。如果没有非NULL值,则返回NULL。完整语法如下:

GROUP_CONCAT([DISTINCT] expr [,expr ...][ORDER BY {unsigned_integer | col_name | expr}[ASC | DESC] [,col_name ...]][SEPARATOR str_val])

What?  这个语法看着太复杂了吧,别着急,下面会用例子慢慢说明逐一验证滴

使用案例

先完成文章开头的需求:

SELECT  performance, GROUP_CONCAT(employee_name)FROM employees
GROUP  BY  performance;

zou是这个结果:

到这里,领导给过来的需求就完成了????

客官请留步,您点的菜还没上完呢......

我们是国际化的团队,我们的家乡遍布五湖四海

领导想关怀一下员工,要查看公司全部员工的家乡都有哪些地方。员工们可能来自同一个地方,所以要将结果集去重复,DISTINCT 关键字就派上用场了

SELECT  GROUP_CONCAT(DISTINCT home_town)FROM employees;

来看结果:

领导的关怀遍布五湖四海啊......

文案要改了,领导的关怀是遍布四海五湖的, 那么 ORDER BY 关键字就派上用场了

SELECT  GROUP_CONCAT(DISTINCT home_town ORDER  BY home_town DESC) AS '领导关怀地区'FROM employees;-- 没我这么起变量的哈,还是汉语,我看你是疯了

这里你看到 GROUP_CONCAT 函数拼接字符串默认的分隔符是逗号 ,, 领导不开心,逗号么的感情,要用❕才能体现出关怀的强烈, SEPARATOR 关键字就派上用场了

分组拼接的值之间默认分隔符是逗号(,)。要明确指定分隔符,需要使用 SEPARATOR 关键字,紧跟其后的是你想设置的分隔符。要完全消除分隔符,就在 SEPARATOR 关键字后面写  '' 就好了

SELECT  GROUP_CONCAT(DISTINCT home_town ORDER  BY home_town DESC SEPARATOR '!') AS '领导关怀地区'FROM employees;
SELECT  GROUP_CONCAT(DISTINCT home_town SEPARATOR '') AS '领导关怀地区'FROM employees;


这关怀到位了吧,你品,你细品! ! !

领导的关怀能力也有限,拼接的字符串默认的最大长度是1024个字符,可以通过下面语句查看当前限制是多少:

show  variables  like 'group_concat_max_len';

领导的能力可是飘忽不定的,所以我们可以灵活的设置这个值

SET [GLOBAL | SESSION] group_concat_max_len = val;
  • SESSION: 在当前对话中生效

  • GLOBAL:全局都生效

该语句在执行后,MySQL重启之前一直有作用,一旦重启 MySQL,则会恢复默认值

有时候 GROUP_CONCAT()  还要搭配 CONCAT_WS() 发挥出一点点威力,举个简单的例子

将消费者的名和姓用逗号进行分隔,然后再用 ; 进行分隔

SELECTGROUP_CONCAT(CONCAT_WS(', ', contactLastName, contactFirstName)SEPARATOR ';')
FROMcustomers;

这里是 CONCAT_WS()函数用法, 很简单,请自行查看吧......

注意⚠️

GROUP_CONCAT()函数返回单个字符串,而不是值列表。这意味着我们不能在 IN 运算符中使用GROUP_CONCAT()函数的结果,例如,在子查询中, 像这样:

SELECTid, name
FROMtable_name
WHEREid IN GROUP_CONCAT(id);

总结

在许多情况下,我们都可以应用GROUP_CONCAT()函数产生出有用的结果,同时也可以结合其他函数发挥出更大的威力. 单招学会了,就要学会连招 combo 了。


http://chatgpt.dhexx.cn/article/iJUoBL0M.shtml

相关文章

MySQL字符串拼接函数

MySQL字符串拼接函数有以下三个: CONCATCONCAT_WSGROUP_CONCAT 1.CONCAT 说明 对指定字符进行拼接 语法 CONCAT(str1,str2,...) 语法说明: CONCAT(字符1,字符2,...) 实例 SELECT CONCAT(this ,is ,a ,demo) AS result FROM DUAL2.CONCAT_WS 说明 …

mysql 实现字符串的拼接

在Mysql 数据库中存在两种字符串连接操作.具体操作如下 一. 语法: 1. CONCAT(string1,string2,…) 说明 : string1,string2代表字符串,concat函数在连接字符串的时候,只要其中一个是NULL,那么将返回NULL 例1: 例2: 2. CONCAT_WS(separator,str1,str2,...) 说明 :…

MySQL 字符串拼接 - 多种字符串拼接实战案例

本文首发:MySQL 字符串拼接 - 多种字符串拼接实战案例 - 卡拉云 MySQL 字符串拼接可以使多个字段的值组成一个集合,不仅可以拼接字符串与字符串、空格、特殊符号甚至可以拼接中文文本,方便我们在不同场景下应用。 本教详细讲解 CONCAT() 和…

MySQL字符串拼接的两种方式

第一种: MySQL自带语法Concat(string1,string2,string3...),此处是直接把string1和string2等等的字符串拼接起来(无缝拼接哦) 说明:此方法在拼接的时候如果有一个值为NULL,则返回NULL select concat(&qu…

MySQL字符串拼接(函数)

最近帮助处理数据,需要批量更新数据,遂上网查了查方法,在此记录一下。我的原始数据如下: 一.CONCAT()函数 说明 : CONCAT(string1,string2,string3...),此处是直接把string1、string2和string3等等的字符串无缝拼接起来,返回结果为连接参数产生的字符…

MYSql-字符串拼接

一、MySQL自带字符串拼接函数 CONCAT 字符串拼接CONCAT_WS 指定字符串分割拼接字符串拼接 ① 语法:CONCAT(str1,str2…) 解释:concat 拼接 str1和str2字符串, 省略号....代表可以多个字符串拼接 示例: SELECT CONCAT("hello&quo…

MySQL字符串拼接concat()、分组拼接字符串group_concat()

MySQL拼接 一、经典拼接concat(x,x,....)二、分隔符拼接CONCAT_WS(separator,str1,str2,...)三、分组拼接GROUP_CONCAT(expr) 一、经典拼接concat(x,x,....) 用法案例: SELECTconcat( 字符串, 拼接, ,啥都可以, 嘿嘿 ) AS concats FROM DUAL注意&…

SQL 拼接字符串

不同的数据库,相应的字符串拼接方式不同,下面进行详细讲解。 一、MySQL字符串拼接 1、CONCAT函数 语法格式:CONCAT(char c1, char c2, …, char cn) ,其中char代表字符串,定长与不定长均可以 连接两个字符串 sele…

Mysql之字符串拼接

mysql字符串拼接 两种方式,第一种,使用 “” 进行拼接(错误的方法), 第二种使用Mysql函数CONCAT()等函数。 使用 “” 使用“”进行对数据是加减。不能进行拼接 拼接用法: 数据表: 错误写法&am…

mysql中的实现字段或字符串拼接的三种方式

一、CONCAT函数 concat函数是将多个字段或字符串拼接为一个字符串;但是字符串之间没有任何分隔。 concat函数官方介绍 -- CONCAT函数的语法如下: CONCAT(str1,str2,...) 1.1、拼接非空字段或字符串 SELECT CONCAT(字段1,字段2,字段3,...) from 表名;-- 拼…

mysql 字符串拼接的几种方式

总是记不住字符串拼接,每次都要百度去搜索,所以在这里记录一下,好方便后续的查找,如有错误和问题可以提出,谢谢。 字符串拼接分为几种方式,在这里会一一举例写出: 第一种: mysql自…

Geth搭建私链(最新)

Geth搭建私链 puppeth 是 Geth 中一个非常有用的命令,它允许您使用一个交互式的命令行界面来创建、配置和管理您的私有链。但是在最新版本的Geth中已经删除了用于以动开发的库和puppeth工具,这也就给我们搭建私链增加了负担。 前提条件 1、Geth正确安…

Geth安装

结合了网上各种文章,经过十多个小时的失败,期间还把虚拟机搞得开机不了,但终于成功的安装了geth。下面我会展示我遇到的问题和解决方案 目录 1.系统环境 2.安装基础工具 3.安装cmake 4.安装Golang 5.防火墙及网络时间同步 6.进入geth …

Geth控制台常用命令

1、Geth控制台命令 Geth Console是一个交互式的JavaScript 执行环境,里面内置了一些用来操作以太坊的JavaScript对象,我们可以直接调用这些对象来获取区块链上的相关信息。 这些对象主要包括: # 主要包含对区块链进行访问和交互相关的方法 eth# 主要包含查看p2p 网…

geth控制台控制

目录 geth控制台控制 启动控制台:输出结果直接显示 启动控制台:控制台输出结果写入 output.log 文件,但不能连接MetaMask 退出控制台 常用命令 开始挖矿 停止挖矿 转账 问题:出现报错 password or unlock 问题&#xff1…

geth的安装和使用

geth的安装和使用过程 windows下安装Geth配置和使用搭建私有网络 windows下安装Geth 1.下载地址: https://geth.ethereum.org/downloads/ 下载windows版 2.按指示安装 3.在cmd下进入安装路径,输入geth help查看是否安装成功 出现下面情况表示安装成功…

使用Geth搭建多节点私有链

使用Geth搭建多节点私有链 步骤 1.编辑初始化配置文件genesis.json {"config": {"chainId": 6668,"homesteadBlock": 0,"eip150Block": 0,"eip150Hash": "0x000000000000000000000000000000000000000000000000000000…

以太坊编程-Geth

前提:开发环境为Windows版本 一、下载安装 geth安装官网地址:https://geth.ethereum.org/downloads/ 安装时,根据提示一步一步安装即可 安装完成之后,需要进行配置环境变量 二、创世区块部署 新建.json文件:新建记事…

以太坊开发--geth的使用入门

geth的全称是go-ethereum,是一个以太坊客户端,用go语言编写,应该是目前最常用的客户端。当然以太坊客户端还有用C,Ruby,Python,Java等其他多种语言编写的,不同类型的客户端是为了满足不同的需求场景。今天我们主要来介绍geth(发音…

Geth安装和使用

一、简介 Geth是Go Ethereum开源项目的简称,它是使用Go语言编写且实现了Ethereum协议的客户端软件,也是目前用户最多,使用最广泛的客户端。通过Geth客户端与以太坊网络进行连接和交互可以实现账户管理、合约部署、挖矿等众多有趣且实用的功能…