SQL—Group_Concat函数用法详解

SQL—Group_Concat函数用法详解

在这里插入图片描述

在LC遇见的一道很有趣的SQL题,有用到这个函数,就借这道题抛砖引玉,在此讲解一下group_concat函数的用法。🤣
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述

GROUP_CONCAT([DISTINCT] expression [ORDER BY expression] [SEPARATOR separator])
  1. DISTINCT(可选):去除重复的值。指定 DISTINCTGROUP_CONCAT 会在连接值之前去除重复的行。

  2. expression:需要合并的字段或表达式。可以是表中的列,也可以是计算结果。

  3. ORDER BY expression(可选):定义合并顺序。可以对结果进行排序(例如按字母顺序排序)。

  4. SEPARATOR separator(可选):指定连接值之间的分隔符,默认为逗号(,)。可以自定义为其他字符或字符串(如空格、分号、破折号等)。


Demo01🍬🍬🍬:基本用法

将同一个 state 下的 city 合并为一个以逗号分隔的字符串。

statecity
CaliforniaLos Angeles
CaliforniaSan Francisco
CaliforniaSan Diego
TexasHouston
TexasAustin
TexasDallas

在这里插入图片描述


Demo02🍬🍬🍬:去重使用(DISTINCT)

避免重复的城市名称,可以使用 DISTINCT

statecity
CaliforniaLos Angeles
CaliforniaLos Angeles
TexasHouston
TexasAustin
TexasDallas
SELECT 
    state,
    GROUP_CONCAT(DISTINCT city ORDER BY city ASC SEPARATOR ', ') AS cities
FROM 
    cities
GROUP BY 
    state;
statecities
CaliforniaLos Angeles
TexasAustin, Dallas, Houston

Demo03🍬🍬🍬:自定义分隔符

SEPARATOR 参数自定义分隔符。

将城市之间用分号(;)连接:

在这里插入图片描述

statecities
CaliforniaLos Angeles; San Diego; San Francisco
TexasAustin; Dallas; Houston

Demo04🍬🍬🍬:按其他字段排序

使用 ORDER BY 对结果进行排序。按城市名称的字母降序排列:

在这里插入图片描述

statecities
CaliforniaSan Francisco, San Diego, Los Angeles
TexasHouston, Dallas, Austin

Demo05🍬🍬🍬:合并计算结果

GROUP_CONCAT 不仅可以用来合并字段,还可以合并计算结果。例如,连接多个字段或计算的结果:

statecitypopulation
CaliforniaLos Angeles1000000
CaliforniaSan Francisco900000
TexasHouston2000000
TexasAustin900000
SELECT 
    state,
    GROUP_CONCAT(CONCAT(city, ' (', population, ')') ORDER BY city ASC SEPARATOR ', ') AS cities
FROM 
    cities
GROUP BY 
    state;
statecities
CaliforniaLos Angeles (1000000), San Francisco (900000)
TexasAustin (900000), Houston (2000000)

Demo06🍬🍬🍬:最大长度限制

默认情况下,GROUP_CONCAT 的结果字符串有最大长度限制。

查询当前最大长度:
SHOW VARIABLES LIKE 'group_concat_max_len';

在这里插入图片描述

修改最大长度(例如,设置为 10000 字节):
SET SESSION group_concat_max_len = 10000;

在这里插入图片描述


最后来一道难度大一丢丢的(综合性比较强)SQL题:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

感谢您的支持🎈生活顺利列位~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/948725.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Edge Scdn的应用场景有哪些?

酷盾安全Edge Scdn 具备强大的安全防护能力,通过多层防御机制,如防火墙、DDoS 攻击防护、入侵检测和防御、数据加密等,有效抵御各种网络攻击,包括 DDoS 攻击、CC 攻击、SQL 注入攻击、XSS 跨站脚本攻击等,保障网站和应…

流光效果

1、流光效果是什么 在 Unity Shader 中的流光效果是一种动态的视觉效果,通常用于给材质增加一种闪光或光线移动的效果,使物体表面看起来像是有光在流动。这种效果常用于武器光效、能量护盾、传送门等等,可以让物体看起来更加生动富有科技感 …

滑动窗口——串联所有单词的子串

一.题目描述 30. 串联所有单词的子串 - 力扣(LeetCode) 二.题目解析 题目前提:s是一个字符串,words是一个字符串数组,里面所有的字符串的长度都是相等的。 题目要求:找到s中的一段连续的子串&#xff0…

【微软,模型规模】模型参数规模泄露:理解大型语言模型的参数量级

模型参数规模泄露:理解大型语言模型的参数量级 关键词: #大型语言模型 Large Language Model #参数规模 Parameter Scale #GPT-4o #GPT-4o-mini #Claude 3.5 Sonnet 具体实例与推演 近日,微软在一篇医学相关论文中意外泄露了OpenAI及Claud…

SpringBoot Maven 项目 pom 中的 plugin 插件用法整理

把 SpringBoot Maven 项目打包成 jar 文件时,我们通常用到 spring-boot-maven-plugin 插件。 前面也介绍过,在 spring-boot-starter-parent POM 和 spring-boot-starter POM 中都有插件的管理,现在我们就撸一把构建元素中插件的用法。 一、…

UE5AI感知组件

官方解释: AI感知系统为Pawn提供了一种从环境中接收数据的方式,例如噪音的来源、AI是否遭到破坏、或AI是否看到了什么。 AI感知组件(AIPerception Component)是用于实现游戏中的非玩家角色(NPC)对环境和其…

【数据仓库】hive on Tez配置

hive on Tez 搭建 前提是hive4.0hadoop3.2.2数仓已搭建完成,现在只是更换其执行引擎 为Tez。搭建可参考【数据仓库】hive hadoop数仓搭建实践文章。 Tez 下载 下载地址 https://archive.apache.org/dist/tez/ 官网地址 https://tez.apache.org/releases/apac…

finereport动态数据源插件教程2

场景: 模板中有多个数据集,只需要其中一个数据集按照不同的参数显示不同数据库的数据。 模板制作: 两个数据集ds1,ds2,ds1的绑定到参数面板的下拉框上,ds2显示到模板正文中,现在需要ds1根据不同…

Java通过谷歌邮箱Gmail直接发送邮件的三种方式

错误 Connected to the target VM, address: 127.0.0.1:52082, transport: socketException in thread "main" javax.mail.MessagingException: Got bad greeting from SMTP host: smtp.gmail.com, port: 587, response: [EOF] at com.sun.mail.smtp.SMTPTransp…

WSDM 2025 | 时间序列(time series)论文总结

AWSDM 2025于2025年3月10号到14号在德国汉诺威举行(Hannover, Germany) 本文总结了WSDM 2024有关时间序列(time series)的相关论文,如有疏漏,欢迎大家补充。(没有时空数据相关的论文&#xff0…

反直觉导致卡关-迫击炮谜题

这个谜题,在两周目中先后卡了我至少三个小时,先后缓慢装填并发射迫击炮弹尝试了数百次。 一周目卡了很久,稀里糊涂的过了,想不到二周目还会卡那么久。 研究了很多播主的攻略,但还是一头雾水, 直到分析其…

庐山派K230学习日记4 PWM控制

1 本节介绍​ 📝本节您将学习如何通过将K230开发板的GPIO引脚复用为PWM功能并输出PWM信号;实现输出PWM信号及控制板载无源蜂鸣器发出声音。 🏆学习目标 1️⃣如何将GPIO引脚配置为PWM模式,通过40Pin排针中的部分引脚来输出PWM信号…

c语言的文件操作与文件缓冲区

目录 C语言文件操作函数汇总 简单介绍文件 为什么使用文件 什么是文件 文件名 二进制文件和文本文件 流和标准流 流 标准流 文件指针 文件的打开和关闭 文件的顺序读写 顺序读写函数介绍 文件的随机读写 fseek ftell rewind 文件读取结束的判定 文件缓冲区 缓…

嵌入式linux中socket控制与实现

一、概述 1、首先网络,一看到这个词,我们就会想到IP地址和端口号,那IP地址和端口各有什么作用呢? (1)IP地址如身份证一样,是标识的电脑的,一台电脑只有一个IP地址。 (2)端口提供了一种访问通道,服务器一般都是通过知名端口号来识别某个服务。例如,对于每个TCP/IP实…

Nginx:动静分离

什么是动静分离? 动静分离 是指将网站中的静态资源(如图片、样式表、脚本等)和动态内容(如 PHP、Python、Node.js 等后端生成的内容)分开部署和处理。这样做的好处是可以利用不同的服务器或缓存策略来优化不同类型的资源。 动静分离的好处 提高性能:静态资源可以直接从…

PADS Layout 差分线设计规则及其设计规则约束的详细过程步骤

一般我们的电路板有很多的差分线,有90欧姆的差分线,也有100欧姆的差分线,90欧姆的差分线主要是针对USB的差分线,特别是对于USB HUB的板子,那么我们就要设置差分线。一般我们设置差分线,一般要切换到Router里面来设置,如下所示: 那么设置差分对,一般要对原理图和Router…

计算机网络--路由表的更新

一、方法 【计算机网络习题-RIP路由表更新-哔哩哔哩】 二、举个例子 例1 例2

概述(讲讲python基本语法和第三方库)

我是北子,这是我自己写的python教程,主要是记录自己的学习成果方便自己日后复习, 我先学了C/C,所以这套教程中可能会将很多概念和C/C去对比,所以该教程大概不适合零基础的人。 it seems that python nowadays 只在人工…

redux用法总结

redux用法总结 目录 基本概念工作原理核心概念基本使用异步操作 Redux ThunkRedux Saga React 集成Redux Toolkit最佳实践 基本概念 什么是 Redux? Redux 是一个可预测的状态容器,用于管理 JavaScript 应用的状态。它遵循三个基本原则: …

Gitee上传项目代码教程(详细)

工具必备:Git Bash 上传步骤 1.在Gitee创建项目仓库 2.进入本地项目目录 右键打开Git Bash here 3.配置用户名和邮箱 如果之前给git配置过用户名和邮箱可跳过 查看Git是否配置成功:git config --list git config --global user.name "xxx"…