GROUP_CONCAT()使用实例
今天看代码的时候看到了在mapper.xml中有使用到这个函数,但是网上很多例子都讲不清楚,所以想着自己记录一下以后方便使用,也欢迎大家一起讨论。
GROUP_CONCAT()定义
GROUP_CONCAT()是mysql提供的一个函数,它的作用是将所选表中的各个字段通过特定字段拼接起来。
语法:
GROUP_CONCAT(DISTINCT expression ORDER BY expression ASC[DESC] SEPARATOR sep);
其中:DISTINCT表示只拼接不重复的字段,若字段重复则不拼接;expression表示要拼接的字段;SEPARATOR表示按照‘sep’给的值来进行字段拼接。
GROUP_CONCAT()实例
为了方便,直接用之前创的用户表进行演示。
CREATE TABLE `user` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '用户id',
`username` varchar(25) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '用户名',
`password` varchar(25) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '密码',
`email` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '邮箱',
`gender` varchar(5) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '性别',
`headerpicurl` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '头像url',
`registerdate` datetime DEFAULT NULL COMMENT '注册时间',
`role` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '角色权限',
`netdisksize` bigint DEFAULT NULL COMMENT '剩余网盘空间大小',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb3;
其中表中的数据如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mrkv9tjd-1679628365916)(C:\Users\83987\AppData\Roaming\Typora\typora-user-images\image-20230324112223328.png)]
通过GROUP_CONCAT()通过‘ , ’对username拼接,可以使用如下方法:
SELECT GROUP_CONCAT(DISTINCT username ORDER BY username ASC SEPARATOR ',') FROM user;
运行结果为:
SELECT GROUP_CONCAT(DISTINCT username ORDER BY username ASC SEPARATOR ',') FROM user;
+---------------------------------------------------------------------+
| GROUP_CONCAT(DISTINCT username ORDER BY username ASC SEPARATOR ',') |
+---------------------------------------------------------------------+
| admin,xiaohong,xiaoming |
+---------------------------------------------------------------------+
1 row in set (0.01 sec)
其中‘xiaohong‘为重复字段,则不重复参与拼接。
结语
至此,GROUP_CONCAT()函数的简单使用就演示完毕了,掌握这个函数在实际项目中对于数据库读取操作还是有一定帮助的,希望能帮助到大家~
_CONCAT()函数的简单使用就演示完毕了,掌握这个函数在实际项目中对于数据库读取操作还是有一定帮助的,希望能帮助到大家~