当前位置: 首页 > news >正文

【Mybatis系列】Mybatis空值关联

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术点,如集合,jvm,并发编程 redis,kafka,Spring,微服务,Netty 等
    • 常用开发工具系列:罗列常用的开发工具,如 IDEA,Mac,Alfred,electerm,Git,typora,apifox 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

    • 一.问题描述
      • 1.已知条件
      • 2.关联条件
      • 3.初步解法
    • 二.解决方案
      • 1.SQL 如下
      • 2.解释说明

一.问题描述

1.已知条件

已知 table_1 有 3 个字段 order_no,community_id,post_id

已知 table_2 也有 3 个字段 order_no,community_id,post_id

2.关联条件

现在需要将 table_1 和 table_2 进行关联,关联条件是 order_no,community_id,post_id 这 3 个字段,但是 order_no 不为 null,不过 community_id,post_id 是可能为 null,也可能不为 null

3.初步解法

如以下 SQL 所示,发现结果为空,没有查询到数据,实际是有数据,问题在于 community_id 和 post_id 对于空值的处理。

<select id="totalPageInfo" resultType="com.kwan.springbootkwan.entity.dto.CsdnTotalIncomeDTO">SELECT t1.receiver_nick_name AS nickName, SUM(t1.received_money) AS amountFROM table_1 t1 left join table_2 t2on t1.order_no = t2.order_noAND t1.community_id=t2.community_idAND t1.post_id=t2.post_idWHERE 1 = 1<if test="query.startDate != null">AND t1.receive_time <![CDATA[>= #{query.startDate}]]>AND t2.create_time <![CDATA[>= #{query.startDate}]]></if><if test="query.endDate != null">AND t1.receive_time <![CDATA[<= #{query.endDate}]]>AND t2.create_time <![CDATA[<= #{query.endDate}]]></if>GROUP BY nickNameORDER BY amount DESC
</select>

二.解决方案

1.SQL 如下

<select id="totalPageInfo" resultType="com.kwan.springbootkwan.entity.dto.CsdnTotalIncomeDTO">SELECT t1.receiver_nick_name AS nickName, SUM(t1.received_money) AS amountFROM table_1 t1 left join table_2 t2on t1.order_no = t2.order_no<![CDATA[AND t1.community_id   <=> t2.community_idAND t1.post_id<=> t2.post_id]]>WHERE 1 = 1<if test="query.startDate != null">AND t1.receive_time <![CDATA[>= #{query.startDate}]]>AND t2.create_time <![CDATA[>= #{query.startDate}]]></if><if test="query.endDate != null">AND t1.receive_time <![CDATA[<= #{query.endDate}]]>AND t2.create_time <![CDATA[<= #{query.endDate}]]></if>GROUP BY nickNameORDER BY amount DESC
</select>

2.解释说明

在这个 SQL 查询中,由于 community_idpost_id 可能为空,你可以通过使用 COALESCE 函数或 IFNULL 函数(具体取决于你使用的数据库系统)来处理可能的空值情况。

下面是一种修改方式,假设你使用的是 MySQL 数据库:

SELECTt1.receiver_nick_name AS nickName,SUM(t1.received_money) AS amount
FROMtable_1 t1
LEFT JOINtable_2 t2 ON t1.order_no = t2.order_noAND t1.community_id <=> t2.community_idAND t1.post_id <=> t2.post_id
WHERE1 = 1<if test="query.startDate != null">AND t1.receive_time <![CDATA[>= #{query.startDate}]]>AND t2.create_time <![CDATA[>= #{query.startDate}]]></if><if test="query.endDate != null">AND t1.receive_time <![CDATA[<= #{query.endDate}]]>AND t2.create_time <![CDATA[<= #{query.endDate}]]></if>
GROUP BYnickName
ORDER BYamount DESC

在这里,使用了 <=> 操作符,它在 MySQL 中用于处理 NULL 值的比较。如果 community_idpost_id 的其中一个是 NULL,那么 <=> 操作符会返回 true。

请根据你使用的数据库类型来调整语法。如果是其他数据库,可能会使用 COALESCEIS NULL 等不同的语法。

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img

相关文章:

【Mybatis系列】Mybatis空值关联

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

计算机组成原理 运输层

文章目录 运输层运输层协议概述进程之间的通信运输层的两个主要协议运输层的端口 用户数据报协议 UDPUDP 概述UDP 的首部格式 传输控制协议 TCP 概述TCP 最主要的特点TCP 的连接 可靠传输的工作原理停止等待协议连续 ARQ协议 TCP 报文段的首部格式TCP 可靠传输的实现以字节为单…...

shp文件与数据库(创建shp文件)

前言 前面把shp文件中的内容读取到数据库&#xff0c;接下来就把数据库中的表变成shp文件。 正文 简单的创建一个shp文件 暂时不读取数据库的表&#xff0c;先随机创建一个shp文件。既然是随机的&#xff0c;这就需要使用到faker这个第三方库&#xff0c;代码如下。 impor…...

106、Text-Image Conditioned Diffusion for Consistent Text-to-3D Generation

简介 很多工作在扩散先验中注入跨视图一致性&#xff0c;但仍然缺乏细粒度的视图一致性。论文提出的文本到3d的方法有效地减轻了漂浮物(由于密度过大)和完全空白空间(由于密度不足)的产生。 实现过程 简单而言&#xff0c;论文工作是 DreamfusionZero123。 使用两种不同的分数…...

MAC通过终端,使用python3建立本地Web服务

实现局域网Web服务&#xff0c;很简单几句命令&#xff0c;一起看看。 1. 我相信你已经有 brew(Homebrew 包管理器) 了对么? 如果没有可以执行这个方法 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"2. 安…...

闲鱼宝库亮相!闲鱼商品详情关键词搜索电商API接口助你畅享无尽好货!

随着互联网的快速发展&#xff0c;电商平台的崛起已经改变了人们的购物习惯。而在众多电商平台中&#xff0c;闲鱼作为一款社区二手交易平台&#xff0c;一直备受用户喜爱。如今&#xff0c;闲鱼宝库正式亮相&#xff0c;为用户带来了更加全面、详细的商品详情关键词搜索电商AP…...

后台生成随机验证码验证登录

web get请求获取图片 <div class"p2"><img id"imgId" src"/get/code"><a href"#">看不清&#xff0c;换一张</a> </div> 后台代码: /*获取动态验证码*/ ResponseBody RequestMapping(value "/…...

常见的HTTP接口超时问题出现原因及解决办法

HTTP接口超时问题是指在HTTP请求发送到服务器后&#xff0c;由于等待服务器响应的时间超过了预设的超时时间&#xff0c;导致请求被中断。以下是可能导致HTTP接口超时问题的原因和解决方法&#xff1a; 网络延迟或不稳定&#xff1a;网络延迟或不稳定可能导致请求在传输过程中…...

Pandas实战100例 | 案例 54: 日期时间运算

案例 54: 日期时间运算 知识点讲解 当处理带有 datetime 类型数据的 DataFrame 时&#xff0c;Pandas 提供了多种方法来提取和计算日期时间组件。这包括提取年份、月份、日期、星期几以及小时等。 提取日期时间组件: 使用 .dt 访问器&#xff0c;可以从 datetime 类型的列中…...

SDL2 连续帧图像显示

QT使用SDL多窗口显示视频&#xff08;linux&#xff0c;ubuntu&#xff09;_linux qt sdl-CSDN博客 QT使用SDL播放YUV视频 - C - QT C 使用SDL显示RGB图像数据_c sdl-CSDN博客 SDL库入门&#xff1a;掌握跨平台游戏开发和多媒体编程_sdl开发-CSDN博客 SDL教程零基础入门 简单…...

回归预测 | MATLAB实现SSA-CNN-GRU-Attention多变量回归预测(SE注意力机制)

回归预测 | MATLAB实现SSA-CNN-GRU-Attention多变量回归预测&#xff08;SE注意力机制&#xff09; 目录 回归预测 | MATLAB实现SSA-CNN-GRU-Attention多变量回归预测&#xff08;SE注意力机制&#xff09;预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab实现SSA…...

使用composer构建软件包时文件(夹)权限设置

在构建软件包的时候你可能会需要对包源内文件或文件夹的权限做出相应的调整&#xff0c;以确保软件包在部署到客户端后可以正常运行。在此之前我们先来了解一下Apple文件系统内文件或文件夹的权限设定。 常见的文件或文件夹会有Owner, Group, Everyone这三种类型的所有权&#…...

【C#】面向对象的三大特性,还记得吗,简单代码举例回顾

欢迎来到《小5讲堂》 大家好&#xff0c;我是全栈小5。 这是《C#》序列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对知识点的理解和掌握。…...

235.【2023年华为OD机试真题(C卷)】机器人搬砖(二分查找-JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目二.解题思路三.题解代码Python题解代码JAVA题解…...

git hooks

介绍 当我们在执行git管理仓库代码时&#xff0c;想规范下每个用户的commit内容&#xff1f;想检查下提交的代码规范&#xff1f;想检查下PR是否通过&#xff0c;那么这个时候就需要用到git hooks&#xff0c;git hooks可以在我们进行git操作的关键时机插入我们想要执行的“脚…...

法规更新美国玩具标准ASTM F963-17有更新,最新标准为ASTM F963-23

美国材料试验协会 (ASTM)在10月13日发布了新的玩具安全标准&#xff1a;ASTM F963-23&#xff0c;ASTM F963-17美国联邦法规16 CFR 1250还在使用当中&#xff0c;出口美国的玩具的厂商要引起重视。 ASTM F963-17是什么标准&#xff1f; ASTM F963-17是美国玩具检测标准&#…...

【grpc】利用protobuf实现java或kotlin调用python脚本,含实现过程和全部代码

前言 在一些特殊场景中&#xff0c;我们可能需要使用java或者其他任意语言调用python脚本或sdk等。本文的需求衍生也不例外于此&#xff0c;python端有sdk&#xff0c;但只能在python中调用&#xff0c;于是就有了本文章。 常见的调用方式如jython、python提供http rest接口、…...

Linux网络 ----- 网络文件共享服务之FTP服务

引言 FTP服务是Internet上最早应用于主机之间进行数据传输的基本服务之一。是目前Internet上使用最广泛的文件传送协议 一、FTP概述 FTP(File TransferProtocol&#xff0c;文件传输协议)是典型的C/S架构的应用层协议&#xff0c;需要由服务端软件、客户端软件两个部分共同实…...

如何避免知识付费小程序平台的陷阱?搭建平台的最佳实践

随着知识经济的兴起&#xff0c;知识付费已经成为一种趋势。越来越多的人开始将自己的知识和技能进行变现&#xff0c;而知识付费小程序平台则成为了一个重要的渠道。然而&#xff0c;市面上的知识付费小程序平台琳琅满目&#xff0c;其中不乏一些不良平台&#xff0c;让老实人…...

第89讲:MySQL数据库迁移方面需要考虑的因素以及XBK企业级备份参数

文章目录 MySQL数据库迁移方面需要考虑的因素1.MySQL数据库迁移方面要考虑的因素2.MySQL5.6升级到5.7版本的方法3.MySQL迁移到其他数据库的方法4.为什么要从XBK备份中还原某张表的数据5.从XBK备份中还原某张表的数据6.XtrBackup企业级备份参数 MySQL数据库迁移方面需要考虑的因…...

森利威尔SL3073替代RT2862 4-65V超宽压3A降压芯片

在电源管理领域&#xff0c;寻找高效、可靠且功能丰富的DC-DC转换器是设计工程师们不懈追求的目标。当面临将36V电压转换为更低电压并保持3A持续输出电流的应用场景时&#xff0c;传统上可能会选择如RT2862这样的同步降压转换器。然而&#xff0c;随着技术的不断进步&#xff0…...

javaweb农贸市场摊位商户管理信息系统设计与实现

目录同行可拿货,招校园代理 ,本人源头供货商功能模块设计商户服务功能市场运营功能技术实现要点项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作同行可拿货,招校园代理 ,本人源头供货商 功能模块设计 用户管理模块 角色划分&…...

寒武纪高级系统软件工程师面试技术解析

1. 寒武纪高级系统软件工程师面试全解析 作为一名在芯片验证领域摸爬滚打多年的工程师&#xff0c;去年我经历了寒武纪高级系统软件工程师岗位的完整面试流程。这个岗位对系统底层和芯片验证的要求非常高&#xff0c;今天我就把两轮技术面的核心问题拆解给大家&#xff0c;并分…...

一天一个开源项目(第62篇):lark-cli - 飞书/Lark 官方 CLI 与 AI Agent Skills

引言 “Built for humans and AI Agents.” 这是「一天一个开源项目」系列的第 62 篇文章。今天介绍的项目是 lark-cli&#xff08;GitHub&#xff09;。 需要在终端或 AI 工作流里操作飞书/Lark&#xff1f;lark-cli 是 larksuite 团队维护的官方 CLI&#xff1a;11 个业务域…...

LIN总线‘智能调度’到底怎么玩?一个汽车雨刮案例讲透事件触发与偶发帧

LIN总线智能调度实战&#xff1a;汽车雨刮系统的动态事件处理与性能优化 雨滴敲击挡风玻璃的瞬间&#xff0c;现代汽车的智能雨刮系统已经完成了从感知到响应的全套动作。这背后是LIN总线在主从架构下对事件触发、偶发调度和诊断插入的精密协调——本文将用工程视角拆解这套机制…...

告别卡顿!用EnhancedScroller优化Unity UI长列表的完整避坑指南

告别卡顿&#xff01;用EnhancedScroller优化Unity UI长列表的完整避坑指南 在Unity开发中&#xff0c;处理大量数据的UI列表是常见的需求&#xff0c;但原生ScrollRect在面对成千上万条数据时往往力不从心。想象一下&#xff0c;当用户滑动一个包含数百个好友的社交列表时&am…...

毫米波雷达数据处理避坑指南:AWR2243的complex1x与complex2x格式到底怎么选?

毫米波雷达数据格式深度解析&#xff1a;AWR2243的complex1x与complex2x实战选择策略 在毫米波雷达信号处理的实际工程中&#xff0c;ADC数据格式的选择往往被当作一个简单的配置参数&#xff0c;直到工程师们在后期信号处理阶段遇到难以解释的噪声问题或成像质量下降时&#x…...

Spring Boot 3.x面试全攻略:自动配置+事务+AOT,2026最新考点

文章目录一、开场&#xff1a;Spring Boot面试&#xff0c;你真的准备好了吗&#xff1f;二、自动配置&#xff1a;从"黑魔法"到"透明厨房"2.1 面试第一问&#xff1a;自动配置到底咋实现的&#xff1f;2.2 3.5版本新考点&#xff1a;TaskExecutor名称变更…...

量子系统的 纯态 和 混合态 的 状态向量 和 密度矩阵

首先&#xff0c;纯态完全可以描述多个纠缠态&#xff08;例如一个Bell态&#xff09;的叠加&#xff0c;而且这是多体量子系统中纯态最核心、最非经典的应用。即&#xff0c;量子系统具有精确已知的任何某个具体状态 &#xff0c;称为处于纯态&#xff0c;这时 且 &#xff…...

程序员的“无用论”:为什么你觉得数据结构与算法没用?

在计算机科学的学习过程中&#xff0c;数据结构与算法&#xff08;DSA&#xff09;常常被视为“面试敲门砖”。许多本科生甚至从业多年的开发者都会产生疑问&#xff1a;“我每天的工作就是 CRUD&#xff08;增删改查&#xff09;和调 API&#xff0c;为什么还要花那么多时间去…...