mysql CONCAT,CONCAT_WS,GROUP_CONCAT
CONCAT()
CONCAT()函数用于将多个字符串连接成一个字符串。
SELECT CONCAT('1', '2'); -- 12 SELECT CONCAT('1', ' ','2'); -- 1 2 SELECT CONCAT('1', NULL,'2'); -- null
CONCAT_WS
CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。但是CONCAT_WS()不会忽略任何空字符串。
SELECT CONCAT_WS('_','1','2'); -- 1_2 SELECT CONCAT_WS('_','1', ' ','2'); -- 1_ _2 SELECT CONCAT_WS('_','1', NULL,'2'); -- 1_2
GROUP_CONCAT
GROUP_CONCAT函数返回一个字符串结果,该结果由分组中的值连接组合而成。
SELECT one_name, GROUP_CONCAT(two_id) FROM one GROUP BY one_name
示例:
1 2 3 4 5 6 7 8 9 10 11 12 | CREATE TABLE `t_orders` ( `id` int NOT NULL AUTO_INCREMENT, `userId` int DEFAULT NULL , `orderId` varchar (20) DEFAULT NULL , PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE =utf8mb4_0900_ai_ci; INSERT INTO `t_orders` VALUES ( '1' , '1' , '100' ); INSERT INTO `t_orders` VALUES ( '2' , '1' , '101' ); INSERT INTO `t_orders` VALUES ( '3' , '1' , '102' ); INSERT INTO `t_orders` VALUES ( '4' , '2' , '200' ); INSERT INTO `t_orders` VALUES ( '5' , '2' , '201' ); INSERT INTO `t_orders` VALUES ( '6' , '3' , '300' ); |
1 2 3 4 5 6 7 8 | -- 普通查询 select userId as 用户ID, orderId as 订单 from t_orders; -- 以 userId 分组,把 orderId 字段的值打印在一行,逗号分隔 select userId as 用户ID, group_concat(orderId) as 订单 from t_orders group by userId; -- 以 userId 分组,把 orderId 字段的值打印在一行,分号分隔 select userId as 用户ID, group_concat(orderId separator ';' ) as 订单 from t_orders group by userId; -- 以 userId 分组,把 orderId 字段的值打印在一行,降序排列 select userId as 用户ID, group_concat(orderId order by orderId desc ) as 订单列表 from t_orders group by userId; |
参考: http://www.mybatis.cn/archives/847.html
分类:
数据库 / MySQL
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2020-06-18 Jenkins git ssh