mysql一次将多条不同sql查询结果并封装到一个结果集的实现方法

作者:卖柴火的小伙子 时间:2024-01-19 23:30:05 

前言

最近遇到一个统计查询需求,要求一次性查询多个统计信息,其中两个查询信息不在一个表中,也没有业务关联,表中也没有做连接处理。不考虑产品设计是否合理,完全是实际需求如此,需要一次性查询出来返回给前端进行展示,对于这种“非常规”的统计查询平常肯定会遇见,感觉有点代表性,所以简单记录一下。希望对有相同需求的同学可以作为参考。

问题处理过程

简单交代一下业务场景,为方便理解,对业务需求做了简化处理。

现在有一个分销活动,每个人都可以成为分销人进行分享活动,一旦有人通过分享的活动连接购买之后分销人会有收益信息,当然分销活动商品也可以不通过分享链接而是直接购买,但是不会存在分销收益一说。表结构方面,所有的订单都存入订单表order中,对于存在分销关系的会将分销绑定信息(分销人与被分销人)记录到record表中,不通过分销直接购买的不会在record表中添加记录。现在要求统计一下当天的订单总数与分销记录总数,假设当天为2022.11.08。

如果是单独统计计算很简单,直接统计总数就可以:

统计当天的总订单数:

SELECT COUNT(1) total_couut FROM order WHERE DATE_FORMAT(order_create_time,'%Y-%m-%d') = '2022-11-08'

统计当天的分销总的分销记录数:

SELECT COUNT(1) record _count FROM record WHEREDATE_FORMAT(create_time,'%Y-%m-%d') = '2022-11-08'

但是如何将两个不同的统计信息封装到一个结果集中,这里提供一种处理方案,使用union all进行并列查询,然后进行求和查询。具体实现方式如下。

1.使用union all进行并列查询

为保证查询出来的参数信息一致,查询订单总数时补充上分销记录总数,查询分销记录总数补充上订单总数,具体实现如下:

SELECT COUNT(1)  total_couut,0 record_count FROM order WHERE DATE_FORMAT(order_create_time,'%Y-%m-%d') = '2022-11-08'
union all
SELECT 0 total_count,COUNT(1) record _count FROM record WHEREDATE_FORMAT(create_time,'%Y-%m-%d') = '2022-11-08'

查询结果如下:

mysql一次将多条不同sql查询结果并封装到一个结果集的实现方法

2.求和处理

现在已经查询出总订单数和总分销记录数,下面需要处理的是如何封装到一个结果集中,处理的方式也很简单,就是直接求和,因为对应的字段值都为0,。具体实现如下:

select sum(t.total_count) total_count, sum(t.record_count) record_count from
(SELECT COUNT(1)  total_couut,0 record_count FROM order WHERE DATE_FORMAT(order_create_time,'%Y-%m-%d') = '2022-11-08'
union all
SELECT 0 total_count,COUNT(1) record _count FROM record WHEREDATE_FORMAT(create_time,'%Y-%m-%d') = '2022-11-08') t

查询结果如下:

mysql一次将多条不同sql查询结果并封装到一个结果集的实现方法

至此问题解决,一条sql将多条无法进行关联的sql封装到一个结果集中。

来源:https://blog.csdn.net/weixin_43401380/article/details/127760865

标签:mysql,封装,结果集
0
投稿

猜你喜欢

  • python实现多张图片拼接成大图

    2021-11-19 08:36:53
  • JSP安全开发之XSS漏洞详解

    2023-06-13 13:07:24
  • JavaScript实现隐藏省略文字效果的方法

    2024-03-18 20:35:29
  • 用CSS设计多种文本框与按钮样式风格

    2007-08-10 13:11:00
  • python制作机器人的实现方法

    2022-11-09 21:09:05
  • sqlserver 存储过程动态参数调用实现代码

    2011-10-24 19:41:22
  • MySQL中Order By多字段排序规则代码示例

    2024-01-22 01:10:35
  • SQL Server中多行多列连接成为单行单列

    2008-12-09 14:39:00
  • go语言import报错处理图文详解

    2024-02-06 17:01:51
  • python 基于opencv操作摄像头

    2023-03-06 08:02:31
  • SQL SERVER 分组求和sql语句

    2024-01-13 04:43:16
  • Python 使用csv库处理CSV文件的方法

    2023-03-16 21:37:24
  • ASP中取得图片宽度和高度

    2009-11-08 18:39:00
  • 举例讲解如何在Python编程中进行迭代和遍历

    2023-07-12 04:42:30
  • Python的Flask项目中获取请求用户IP地址 addr问题

    2021-09-08 08:38:47
  • Linux下Python脚本自启动和定时启动的详细步骤

    2022-08-13 20:51:22
  • LotusPhp笔记之:基于ObjectUtil组件的使用分析

    2023-11-19 09:18:32
  • python smtplib发送带附件邮件小程序

    2023-03-24 17:14:26
  • WEB设计经验-来自Microsoft

    2008-05-15 07:30:00
  • Python学习之字符串常用操作详解

    2022-07-14 18:54:48
  • asp之家 网络编程 m.aspxhome.com