ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

mysql:GROUP_CONCAT

2020-05-17 23:51:49  阅读:252  来源: 互联网

标签:GROUP 05 23 28 sale 2020 mysql order CONCAT


首先新建一张订单分批销售表,并插入数据,如下:

mysql> select * from order_sale_info;
+----+---------------------+-----+----------+
| id | sale_date           | num | order_id |
+----+---------------------+-----+----------+
|  1 | 2020-05-12 23:28:13 |  12 | 100      |
|  2 | 2020-05-14 23:28:36 |  15 | 100      |
|  3 | 2020-05-15 23:28:51 |   1 | 100      |
|  4 | 2020-05-16 23:29:04 |  10 | 101      |
|  5 | 2020-05-17 00:29:21 |   8 | 101      |
+----+---------------------+-----+----------+
5 rows in set

需求是根据订单号查出分批销售的时间、数量,并将他们拼接为字符串输出,先看语句和结果:

mysql> SELECT order_sale_info.order_id, GROUP_CONCAT(order_sale_info.sale_date,':',order_sale_info.num) saleInfo FROM 
`order_sale_info` GROUP BY order_sale_info.order_id; +----------+---------------------------------------------------------------------+ | order_id | saleInfo | +----------+---------------------------------------------------------------------+ | 100 | 2020-05-12 23:28:13:12,2020-05-14 23:28:36:15,2020-05-15 23:28:51:1 | | 101 | 2020-05-16 23:29:04:10,2020-05-17 00:29:21:8 | +----------+---------------------------------------------------------------------+ 2 rows in set

此处就使用了GROUP_CONCAT函数,此函数可以将将符合条件(GROUP BY order_sale_info.order_id)的行数据组合起来(2020-05-12 23:28:13:12,2020-05-14 23:28:36:15,2020-05-15 23:28:51:1 )。

理解:CONCAT是mysql连接/拼接函数,GROUP是分组的意思,那GROUP_CONCAT就是按条件分组并拼接的意思了。

进一步,如果想查在某个时间段内的数据,可如下:

SELECT order_sale_info.order_id, GROUP_CONCAT(order_sale_info.sale_date,':',order_sale_info.num) saleInfo FROM `order_sale_info` 

WHERE order_sale_info.sale_date BETWEEN '2020-05-13 23:28:13' AND '2020-05-17 13:28:13' GROUP BY order_sale_info.order_id; +----------+----------------------------------------------+ | order_id | saleInfo | +----------+----------------------------------------------+ | 100 | 2020-05-14 23:28:36:15,2020-05-15 23:28:51:1 | | 101 | 2020-05-16 23:29:04:10,2020-05-17 00:29:21:8 | +----------+----------------------------------------------+ 2 rows in set

 

标签:GROUP,05,23,28,sale,2020,mysql,order,CONCAT
来源: https://www.cnblogs.com/silenceshining/p/12907800.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有