首页 > 数据库 >数据库 Mysql 多表查询,left join联合两个sql示例

数据库 Mysql 多表查询,left join联合两个sql示例

时间:2023-12-25 21:03:44浏览次数:42  
标签:-% IX 01 join FORMAT ZLRQ 示例 DATE 多表


SELECT 
    t1.RowID,
    t1.UserID,
    t1.CreateDate,
    t1.BatchState,
    t2.InputDataCount,
    t1.Qty
FROM (
    SELECT 
        @curRow := @curRow + 1 AS RowID,
        `UserID`,
        DATE_FORMAT(CreateDate, '%Y-%m-%d') AS CreateDate,
        BatchState,
        SUM(`InputDataCount`) AS InputDataCount,
        SUM(`ProccessedPages`) AS Qty
    FROM 
        `be_UserDoBatchRecord`,(SELECT @curRow := 0) r	            
    WHERE 
        1=1  AND  DATE_FORMAT(CreateDate,'%Y-%m-%d') >= '2023-10-01' AND  DATE_FORMAT(CreateDate,'%Y-%m-%d') <= '2023-10-16' GROUP BY 
		            UserID,
		            DATE_FORMAT(CreateDate,'%Y-%m-%d'),
		            BatchState) AS t1
LEFT JOIN (
    SELECT IX_ZLRQ AS CreateDate, IX_ZLR AS UserID, COUNT(IX_ZLR) AS InputDataCount
    FROM (
        SELECT IX_ZLR, IX_ZLRQ FROM ix_jnml01 
        WHERE 1=1 AND  DATE_FORMAT(IX_ZLRQ, '%Y-%m-%d') >= '2023-10-01' AND  DATE_FORMAT(IX_ZLRQ, '%Y-%m-%d') <= '2023-10-16'
        
        UNION ALL
        SELECT IX_ZLR, IX_ZLRQ FROM ix_jnml02
        WHERE 1=1 AND  DATE_FORMAT(IX_ZLRQ, '%Y-%m-%d') >= '2023-10-01' AND  DATE_FORMAT(IX_ZLRQ, '%Y-%m-%d') <= '2023-10-16'
        
        UNION ALL
        SELECT IX_ZLR, IX_ZLRQ FROM ix_jnml03
        WHERE 1=1 AND  DATE_FORMAT(IX_ZLRQ, '%Y-%m-%d') >= '2023-10-01' AND  DATE_FORMAT(IX_ZLRQ, '%Y-%m-%d') <= '2023-10-16'
        
        UNION ALL
        SELECT IX_ZLR, IX_ZLRQ FROM ix_jnml04
        WHERE 1=1 AND  DATE_FORMAT(IX_ZLRQ, '%Y-%m-%d') >= '2023-10-01' AND  DATE_FORMAT(IX_ZLRQ, '%Y-%m-%d') <= '2023-10-16'
        
        UNION ALL
        SELECT IX_ZLR, IX_ZLRQ FROM ix_jnml05
        WHERE 1=1 AND  DATE_FORMAT(IX_ZLRQ, '%Y-%m-%d') >= '2023-10-01' AND  DATE_FORMAT(IX_ZLRQ, '%Y-%m-%d') <= '2023-10-16'
        
        UNION ALL
        SELECT IX_ZLR, IX_ZLRQ FROM ix_jnml06
        WHERE 1=1 AND  DATE_FORMAT(IX_ZLRQ, '%Y-%m-%d') >= '2023-10-01' AND  DATE_FORMAT(IX_ZLRQ, '%Y-%m-%d') <= '2023-10-16'
    
        UNION ALL
        SELECT IX_ZLR, IX_ZLRQ FROM ix_ywyj01
        WHERE 1=1 AND  DATE_FORMAT(IX_ZLRQ, '%Y-%m-%d') >= '2023-10-01' AND  DATE_FORMAT(IX_ZLRQ, '%Y-%m-%d') <= '2023-10-16'
    
        UNION ALL
        SELECT IX_ZLR, IX_ZLRQ FROM ix_ywyj02
        WHERE 1=1 AND  DATE_FORMAT(IX_ZLRQ, '%Y-%m-%d') >= '2023-10-01' AND  DATE_FORMAT(IX_ZLRQ, '%Y-%m-%d') <= '2023-10-16'
    
        UNION ALL
        SELECT IX_ZLR, IX_ZLRQ FROM ix_ywyj03
        WHERE 1=1 AND  DATE_FORMAT(IX_ZLRQ, '%Y-%m-%d') >= '2023-10-01' AND  DATE_FORMAT(IX_ZLRQ, '%Y-%m-%d') <= '2023-10-16'
    
        UNION ALL
        SELECT IX_ZLR, IX_ZLRQ FROM ix_ywyj04
        WHERE 1=1 AND  DATE_FORMAT(IX_ZLRQ, '%Y-%m-%d') >= '2023-10-01' AND  DATE_FORMAT(IX_ZLRQ, '%Y-%m-%d') <= '2023-10-16'
    
        UNION ALL
        SELECT IX_ZLR, IX_ZLRQ FROM ix_ywyj05
        WHERE 1=1 AND  DATE_FORMAT(IX_ZLRQ, '%Y-%m-%d') >= '2023-10-01' AND  DATE_FORMAT(IX_ZLRQ, '%Y-%m-%d') <= '2023-10-16'
    
        UNION ALL
        SELECT IX_ZLR, IX_ZLRQ FROM ix_ywyj06
        WHERE 1=1 AND  DATE_FORMAT(IX_ZLRQ, '%Y-%m-%d') >= '2023-10-01' AND  DATE_FORMAT(IX_ZLRQ, '%Y-%m-%d') <= '2023-10-16'
    ) AS CombinedTables
    GROUP BY IX_ZLRQ, IX_ZLR
) AS t2
ON t1.CreateDate = t2.CreateDate AND t1.UserID = t2.UserID;

这个 SQL 查询语句是一个复杂的查询,它从多个表中检索数据,并使用 LEFT JOIN 连接这些表。以下是对该查询的分析:

查询主要目的: 这个查询的目的是检索出满足一定日期范围条件的数据,并将结果返回。查询涉及到了几个表,包括 be_UserDoBatchRecord、ix_jnml01、ix_jnml02 等。

子查询 t1: 第一个子查询 (t1) 从 be_UserDoBatchRecord 表中选取数据。其中,使用 DATE_FORMAT 函数将 CreateDate 字段转换成指定格式的日期,并将结果作为 CreateDate 列的值。然后,使用 GROUP BY 按照 UserID、CreateDate 和 BatchState 进行分组,计算出每个分组的 InputDataCount(InputDataCount 的计算使用了 SUM 聚合函数)和 Qty(Qty 的计算也使用了 SUM 聚合函数)。

子查询 t2: 第二个子查询 (t2) 是一个 UNION ALL 的组合查询,从多个表中选取数据。每个子查询都使用了相同的日期范围条件,并计算每个日期与用户的匹配数 (InputDataCount),然后按照日期和用户 (IX_ZLRQ 和 IX_ZLR) 进行分组。

LEFT JOIN 连接: 最后,将子查询 t1 和 t2 使用 LEFT JOIN 连接,并通过 t1 的 CreateDate 和 UserID 与 t2 的 CreateDate 和 UserID 进行匹配。匹配成功的记录将包含在查询结果中,并返回包含 t1 和 t2 列的结果集。


标签:-%,IX,01,join,FORMAT,ZLRQ,示例,DATE,多表
From: https://blog.51cto.com/u_14910409/8972149

相关文章

  • 企业实战总结:SQL Join执行的常见问题及解决方案
    1.背景SQL的join对于数据开发同学是最经常遇到的操作,通过表与表之间的关联来得到想要的数据。但是在开发中我们会遇到一些莫名奇妙的问题,本文就选择最常见的两类问题跟大家分享。2.结果不符合预期2.1string和bigint做join,出现重复数据这个问题源于底层的隐式转换规则,当string和b......
  • 【flink番外篇】5、flink的window(介绍、分类、函数及Tumbling、Sliding、session窗口
    Flink系列文章一、Flink专栏Flink专栏系统介绍某一知识点,并辅以具体的示例进行说明。1、Flink部署系列本部分介绍Flink的部署、配置相关基础内容。2、Flink基础系列本部分介绍Flink的基础部分,比如术语、架构、编程模型、编程指南、基本的datastreamapi用法、四大基......
  • 利用Prompt学习更多示例,提高大模型性能
    随着人工智能技术的不断发展,大型语言模型(如GPT-3、BERT等)在自然语言处理领域的应用越来越广泛。然而,这些模型通常需要大量的训练数据才能达到较高的性能。为了解决这个问题,一种有效的方法是使用prompt学习,即通过向模型提供示例来引导其生成输出。在prompt学习中,关键在于如何选择和......
  • FineReport 11.0参数查询入门示例操作记录
    参数的主要作用是实现用户与数据的实时交互,即进行数据的过滤。我们可以在很多情况下使用参数,比如在单元格中引用参数来实现动态标题、根据参数值的不同显示不同值等等。如下图所示:links:https://help.fanruan.com/finereport/doc-view-166.html?source=0&from=base......
  • 无涯教程-PostgreSQL - Joins(连接语句)
    PostgreSQLJoins子句用于合并数据库中两个或多个表中的记录,JOIN是一种通过使用每个表的公用值来组合两个表中的字段的方法。PostgreSQL中的联接类型是-CROSSJOININNERJOINLEFTOUTERJOINRIGHTOUTERJOINFULLOUTERJOIN在继续之前,让无涯教程考虑两个表,COMPANY和DE......
  • 【Python常用模块之logging模块】---日志输出功能(示例代码)
    title:【Python常用模块之logging模块】---日志输出功能(示例代码)date:2023-12-2420:14:06updated:2023-12-2420:23:00description:【Python常用模块之logging模块】---日志输出功能(示例代码)cover:https://pythonjishu.com/tdcgatffvrvdoop/2023年6月......
  • 【flink番外篇】4、flink的sink(内置、mysql、kafka、redis、clickhouse、分布式缓存、
    文章目录Flink系列文章一、maven依赖二、Jdbc/mysql示例1、maven依赖2、实现1)、userbean2)、内部匿名类实现3)、lambda实现4)、普通继承RichSinkFunction实现5)、完整代码3、验证本文介绍了Flink将数据sink到mysql中,其实是通过jdbc来将数据sink到rmdb中,mysql是一个常见的数据库,故......
  • AntDesignBlazor示例——Modal表单
    本示例是AntDesignBlazor的入门示例,在学习的同时分享出来,以供新手参考。示例代码仓库:https://gitee.com/known/BlazorDemo1.学习目标创建Modal表单编辑数据创建Table操作列2.创建Modal表单1)新增按钮和Modal组件打开天气页面Weather.razor文件,按照如下步骤添加新增按钮......
  • Python函数的使用和示例
    在Python中,函数是一种组织和复用代码的重要方式。函数可以帮助你将代码分解成小的、可管理的部分,并且可以在不同的地方重复使用这些代码。这里是一个简单的Python函数的示例:函数定义与使用定义一个函数:函数以def关键字开始,后跟函数名和圆括号()。圆括号内可以包含参数,也可以为空。......
  • 【江鸟中原】ArkUI组件示例
    学习了一段鸿蒙课,觉得有必要晒一晒自己的进步。通过对ArkUI的学习,我学会了它主要分为基础组件、容器和弹窗。下面我主要对基础组件的按钮和文本进行分析,希望对学习鸿蒙开发的同学有帮助。1.在DevEcoStudio中创建一个新项目2.在main下面的pages文件夹下建立ButtonPage.ets项目项目......