千家信息网

mysql中GROUP_CONCAT函数如何使用

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇文章给大家分享的是有关mysql中GROUP_CONCAT函数如何使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。GROUP_CO
千家信息网最后更新 2026年11月01日mysql中GROUP_CONCAT函数如何使用

本篇文章给大家分享的是有关mysql中GROUP_CONCAT函数如何使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

GROUP_CONCAT()是MySQL数据库提供的一个函数,通常跟GROUP
BY一起用,具体可参考MySQL官方文挡:http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat。

语法:

GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,col_name ...]] [SEPARATOR str_val])1.例如:SELECT student_id, GROUP_CONCAT(courses_id) AS courses FROM student_courses WHERE student_id=2 GROUP BY student_id;+------------+---------+| student_id | courses |+------------+---------+|            2        | 3,4,5   | +------------+---------+这 就不需要用php循环了$row = $pdo->query("SELECT student_id, GROUP_CONCAT(courses_id) AS courses FROM student_courses WHERE student_id=2 GROUP BY student_id");$result = explode(',', $row['courses']);

2.当然分隔符还可以自定义,默认是以","作为分隔符,若要改为"|||",则使用SEPARATOR来指定,例如:

SELECT student_id, GROUP_CONCAT(courses_id SEPARATOR '|||') AS courses FROM student_courses WHERE student_id=2 GROUP BY student_id;+------------+---------+| student_id | courses |+------------+---------+|            2        | 3|||4|||5    | +------------+---------+3.除此之外,还可以对这个组的值来进行排序再连接成字符串,例如按courses_id降序来排:SELECT student_id, GROUP_CONCAT(courses_id ORDER BY courses_id DESC) AS courses FROM student_courses WHERE student_id=2 GROUP BY student_id;+------------+---------+| student_id | courses |+------------+---------+|            2        | 5,4,3   | +------------+---------+4.需要注意的:

a.int字段的连接陷阱

当你用group_concat的时候请注意,连接起来的字段如果是int型,一定要转换成char再拼起来,

否则在你执行后(ExecuteScalar或者其它任何执行SQL返回结果的方法)返回的将不是一个逗号隔开的串,

而是byte[]。

该问题当你在SQLyog等一些工具中是体现不出来的,所以很难发现。

select group_concat(ipaddress) from t_ip
返回逗号隔开的串
select group_concat(id) from t_ip 返回byte[]
select group_concat(CAST(id as char)) from t_dep
返回逗号隔开的串
select group_concat(Convert(id , char)) from t_dep
返回逗号隔开的串

附Cast,convert的用法:
CAST(expr AS type), CONVERT(expr,type) , CONVERT(expr USING
transcoding_name)
CAST() 和CONVERT()
函数可用来获取一个类型的值,并产生另一个类型的值。

这个类型 可以是以下值其中的 一个:

BINARY[(N)]
CHAR[(N)]
DATE
DATETIME
DECIMAL
SIGNED [INTEGER]
TIME
UNSIGNED [INTEGER]

b.长度陷阱
用了group_concat后,select里如果使用了limit是不起作用的.

用group_concat连接字段的时候是有长度限制的,并不是有多少连多少。但你可以设置一下。

使用group_concat_max_len系统变量,你可以设置允许的最大长度。

程序中进行这项操作的语法如下,其中 val
是一个无符号整数:
SET [SESSION | GLOBAL] group_concat_max_len = val;
若已经设置了最大长度,
则结果被截至这个最大长度。

在SQLyog中执行 SET GLOBAL group_concat_max_len = 10
后,重新打开SQLyog,设置就会生效。

以上就是mysql中GROUP_CONCAT函数如何使用,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

长度 函数 逗号 最大 字段 类型 分隔符 时候 更多 知识 篇文章 结果 语法 陷阱 实用 作用 变量 字符 字符串 官方 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海挚品互联网科技有限公司 河南云网互联网络科技有限公司 互联网科技工作委员会毛军 盈实互联网科技 华宇互联网科技 中国互联网科技发展 丰台科技园 互联网 美国互联网前沿科技 互联网科技公司的市场部门 随着互联网科技发展 金融科技与互联网金融相同和不同 福建科技产业互联网发展 互联网还是高科技吗 互联网科技大奖都有哪些公司 996高科技互联网公司 元气玛特互联网科技公司是外包吗 互联网金融科技公司的优势 广州互联网高科技取餐柜 信承诺互联网科技有限公司 现代互联网科技公司 喔噻互联网科技有限公司 南京欣网互联网络科技有限公司 互联网科技巨头监管 互联网科技与金融科技 互联网与未来科技 极限挑战互联网科技 科技创新互联网企业 奇士达互联网科技 厦门千工互联网科技有限公司 河南商务圈互联网科技有限公司
0