GBase 8s
其他
文章
南大通用GBase 8s group_concat函数 功能介绍
发表于2026-08-19 17:37:18479次浏览3个评论
一、什么是 GROUP_CONCAT?
GROUP_CONCAT 是 SQL 中一个聚合函数,它将多个行的值连接成一个字符串,常用于分组查询时将多行数据合并为一行。
二、基本语法
GROUP_CONCAT([DISTINCT] column_name
[ORDER BY order_column ASC/DESC]
[SEPARATOR 'separator'])
- DISTINCT:可选,去除重复值
- ORDER BY:可选,指定连接值的排序
- SEPARATOR:可选,指定分隔符(默认为逗号,)三、简单示例
注:以下用例在GBase8sV8.8_AEE_3.6.5_RC2_MY_2_8107a4版本中运行
-- 创建表,需要在mysql模式下执行
set environment sqlmode ‘mysql’;
CREATE TABLE students (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
class VARCHAR(10) NOT NULL,
subject VARCHAR(20) NOT NULL
);
-- 插入示例数据
INSERT INTO students (id, name, class, subject) VALUES
(1, '张三', 'A班', '数学'),
(2, '李四', 'A班', '英语'),
(3, '王五', 'A班', '数学'),
(4, '赵六', 'B班', '物理'),
(5, '钱七', 'B班', '化学');示例 1:基础用法
-- 获取每个班级的所有学生姓名(用逗号分隔)
> SELECT class, GROUP_CONCAT(name) AS students
FROM students
GROUP BY class;
结果:
CLASS A班
STUDENTS 张三,李四,王五
CLASS B班
STUDENTS 赵六,钱七
2 row(s) retrieved.示例 2:使用 DISTINCT 去重
-- 获取每个班级的不重复科目
> SELECT class, GROUP_CONCAT(DISTINCT subject) AS subjects
FROM students
GROUP BY class;
结果:
CLASS A班
SUBJECTS 数学,英语
CLASS B班
SUBJECTS 化学,物理
2 row(s) retrieved.示例 3:自定义分隔符
-- 使用分号作为分隔符
> SELECT class,
GROUP_CONCAT(name SEPARATOR ';') AS students
FROM students
GROUP BY class;
结果:
CLASS A班
STUDENTS 张三;李四;王五
CLASS B班
STUDENTS 赵六;钱七
2 row(s) retrieved.示例 4:排序
-- 按字母顺序排序姓名
> SELECT class,
GROUP_CONCAT(name ORDER BY name ASC) AS students
FROM students
GROUP BY class;
结果:
CLASS A班
STUDENTS 张三,李四,王五
CLASS B班
STUDENTS 赵六,钱七
2 row(s) retrieved.GROUP_CONCAT 是一个强大的 SQL 函数,特别适合需要将多行数据合并展示的场景。掌握它可以大大简化某些复杂查询,提高数据处理效率。记得根据实际需求选择合适的参数(去重、排序、分隔符),并注意长度限制问题。
评论
登录后才可以发表评论
GBase用户28017发表于 2个月前
很详实。
GBase用户51829发表于 2个月前
聚合函数,把同一个分组内多行的字段值,拼接合并成一条字符串。
郝老师发表于 2个月前
示例具有业务性!相比于手册中出现的 t1 col1等随意取名的表活着字段名称,专业很多
热门帖子
- 12025-12-01浏览数:183877
- 22023-05-09浏览数:26553
- 42023-09-25浏览数:20246
- 52020-05-11浏览数:19026