千家信息网

mysql中GROUP_CONCAT函数如何使用

发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,本篇文章给大家分享的是有关mysql中GROUP_CONCAT函数如何使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。GROUP_CO
千家信息网最后更新 2025年01月21日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安全错误 数据库的锁怎样保障安全 广东智行网络技术有限公司 软件开发联系函 怎么把网站挂载阿里云服务器 阿里云服务器登陆不上 怎么备考网络技术 售后完善的计算机软件开发费用 数据库新建视图的方法 更新软件的地址就是服务器地址 企业网络安全论文答辩 北京常见软件开发收购价格 学java后学什么数据库好 科学小实验网络技术服务 软件开发技术合同要求 末日来袭怎样选择服务器 服务器与虚拟主机的区别 失落的方舟欧美服务器名字 服务器管理器里的角色在哪儿 奇迹mu风云再起服务器关服了吗 个人保护自己的网络安全法有哪些 工信部加强网络安全风险 串口通信服务器多少钱 计算机网络技术最主要技术 潜山网络安全有哪些 北京java软件开发哪家快 学生公寓网络技术 数据库原理及其应用好学吗 迅雷搜索软件开发 物料数据库 将数据库拷贝到另一台机器上 网络技术市值
0