MySQL GROUP_CONCAT 函数:将多行数据合并成一行

MySQL GROUP_CONCAT 函数:将多行数据合并成一行

文章目录


前言

提示:这里可以添加本文要记录的大概内容:

在处理数据库时,我们经常需要将多个行的数据合并成一行进行展示或进一步处理。MySQL提供了GROUP_CONCAT函数来实现这一需求,它是一个非常强大且灵活的工具,尤其适用于需要汇总信息的场景。本文将详细介绍GROUP_CONCAT的用法、特性及其应用场景。


提示:以下是本篇文章正文内容,下面案例可供参考

什么是GROUP_CONCAT?

GROUP_CONCAT是MySQL中的一种聚合函数,用于将多行的结果集合并成一个单一的字符串,并通过指定的分隔符连接这些值。这个函数通常与GROUP BY一起使用,可以有效地将相关行的信息压缩到单个结果行中。

基本语法

GROUP_CONCAT([DISTINCT] expr [,expr ...][ORDERBY {unsigned_integer | col_name | expr} [ASC|DESC][,col_name ...]][SEPARATOR str_val])
  • expr: 要连接的列名或表达式。
  • DISTINCT: 可选参数,用于去除重复值。
  • ORDER BY: 可选参数,用于对值进行排序。
  • SEPARATOR: 指定连接符,默认为逗号,

使用示例一

假设我们有一个名为students的表,结构如下:

在这里插入图片描述

示例1: 基本用法

如果我们想获取每个班级的所有学生的名字,可以这样写:

SELECT class, GROUP_CONCAT(name)AS students FROM students GROUPBY class;

输出结果:

在这里插入图片描述

示例2: 去重并排序

如果我们想要去除重复的学生名字,并按字母降序排列,可以这样做:

SELECT class, GROUP_CONCAT(DISTINCT name ORDERBY name DESC)AS students FROM students GROUPBY class;

输出结果:

在这里插入图片描述

高级应用

应用场景示例

在一个电商数据库中,有一个订单表和一个订单详情表。查询每个订单的商品名称列表:

SELECT o.order_id, GROUP_CONCAT(od.product_name SEPARATOR ', ')AS products FROM orders o JOIN order_details od ON o.order_id = od.order_id GROUPBY o.order_id;

这将返回每个订单ID及其对应的所有商品名称的列表。

注意事项

  • 长度限制GROUP_CONCAT的最大长度受限于系统变量group_concat_max_len(默认是1024字节)。如果需要,可以通过设置这个变量来调整最大长度:
SETSESSION group_concat_max_len =1000000;

结论

GROUP_CONCAT是MySQL中一个非常实用的函数,它可以帮助开发者更高效地处理和展示数据。无论是在简单的统计分析还是复杂的数据聚合场景中,GROUP_CONCAT都能提供强大的支持。掌握它的用法和技巧,可以让SQL查询更加简洁和功能强大。

为了更好地展示如何在电商数据库环境中使用 GROUP_CONCAT,我们将设计一个简化的电商数据库模型,并提供一些示例数据。这个模型将包括两个主要的表:orders(订单表)和 order_details(订单详情表)。这两个表之间的关系是一对多的关系,即一个订单可以包含多个商品。

使用示例二

Orders 表 (订单表)

在这里插入图片描述


在这里插入图片描述

Order_Details 表 (订单详情表)

在这里插入图片描述


在这里插入图片描述

使用 GROUP_CONCAT 的查询示例

获取每个订单的商品名称列表,可以使用如下SQL查询:

SELECT o.order_id, o.customer_name, o.order_date, GROUP_CONCAT(od.product_name SEPARATOR ', ')AS products FROM orders o JOIN order_details od ON o.order_id = od.order_id GROUPBY o.order_id, o.customer_name, o.order_date;

查询结果

在这里插入图片描述

通过上述结构、数据以及查询示例,可以清晰地看到如何在一个典型的电商数据库环境中使用GROUP_CONCAT来汇总信息。这不仅提高了数据处理效率,还能让查询结果更加直观易读

Read more

windows部署的OpenClaw接入飞书机器人

windows部署的OpenClaw接入飞书机器人

文章目录 * 前言 * 一、创建飞书应用 * 1.登录飞书开放平台 * 2.创建企业自建应用 * 3.发布企业自建应用 * 二、OpenClaw配置接入飞书 * 1.安装飞书插件 * 2.配置飞书事件回调 * 3.使用测试 * 总结 前言 OpenClaw 原生支持的即时通信平台主要是海外的 WhatsApp、Telegram、Discord、Slack、iMessage 等,国内用户不习惯,目前国产即时通信软件大厂也跟进了,现在钉钉,飞书等都已支持接入OpenClaw,本文主要是配置飞书机器人接入 OpenClaw,使大家可以通过飞书即可指挥OpenClaw为我们干活,当然配置钉钉接入也可以作为参考。 * windowsWindows 本地(PowerShell)一键部署 OpenClaw * 飞书账号(有飞书开放平台权限的账号) 一、创建飞书应用 1.登录飞书开放平台 1.1 网页访问,

By Ne0inhk

波士顿动力机器人技术全解析从四足Spot到人形Atlas的机器人革命

波士顿动力公司(Boston Dynamics)作为全球移动机器人领域的领导者,其产品以卓越的运动能力和动态平衡技术闻名于世。本文系统介绍了波士顿动力的三大核心产品:四足机器狗Spot、物流机器人Stretch和人形机器人Atlas。2026年1月,波士顿动力在CES展会上首次公开演示了全新电动版Atlas产品版本,标志着人形机器人正式进入商业化阶段。Atlas配备56个自由度,可举重110磅(50公斤),能够在低至-20°C到高至40°C的环境中工作,并具备自主更换电池的能力。公司已与现代汽车和Google DeepMind建立战略合作,计划于2028年在现代乔治亚州工厂部署Atlas进行汽车装配。本文深入分析了波士顿动力30余年的技术积累、核心机器人产品特性、AI驱动的控制系统,以及其在工业自动化领域的革命性影响。 1. 公司背景与发展历程 1.1 创立与早期研究 波士顿动力公司由Marc Raibert于1992年从麻省理工学院(MIT)独立出来成立,最初源于Raibert在MIT和卡内基梅隆大学的腿部实验室(Leg Laboratory)。该实验室为建立动态移动机器人的

By Ne0inhk
【机器人】复现 StreamVLN 具身导航 | 流式VLN | 连续导航

【机器人】复现 StreamVLN 具身导航 | 流式VLN | 连续导航

StreamVLN 通过在线、多轮对话的方式,输入连续视频,输出动作序列。 通过结合语言指令、视觉观测和空间位姿信息,驱动模型生成导航动作(前进、左转、右转、停止)。 论文地址:StreamVLN: Streaming Vision-and-Language Navigation via SlowFast Context Modeling 代码地址:https://github.com/OpenRobotLab/StreamVLN 本文分享StreamVLN 复现和模型推理的过程~ 下面是示例效果: 1、创建Conda环境 首先创建一个Conda环境,名字为streamvln,python版本为3.9; 然后进入streamvln环境,执行下面命令: conda create -n streamvln python=3.9 conda activate streamvln 2、 安装habitat仿真环境

By Ne0inhk
[论文阅读] AI + 软件工程 | 突破LLM上下文瓶颈:上下文内存虚拟化CMV的设计与实践

[论文阅读] AI + 软件工程 | 突破LLM上下文瓶颈:上下文内存虚拟化CMV的设计与实践

突破LLM上下文瓶颈:上下文内存虚拟化CMV的设计与实践 论文基础信息 * 原标题:Contextual Memory Virtualisation: DAG-Based State Management and Structurally Lossless Trimming for LLM Agents * 主要作者:Cosmo Santoni * 研究机构:帝国理工学院(Imperial College London) * 发表时间:2026年2月 * 引文格式(GB/T 7714):SANTONI C. Contextual memory virtualisation: DAG-based state management and structurally lossless trimming for LLM agents[EB/OL]. [2026-02-25]. arXiv:

By Ne0inhk