【Mybatis系列】Mybatis空值关联
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
- 推荐: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_id 和 post_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_id 或 post_id 的其中一个是 NULL,那么 <=> 操作符会返回 true。
请根据你使用的数据库类型来调整语法。如果是其他数据库,可能会使用 COALESCE 或 IS NULL 等不同的语法。
觉得有用的话点个赞
👍🏻呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙
相关文章:
【Mybatis系列】Mybatis空值关联
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
计算机组成原理 运输层
文章目录 运输层运输层协议概述进程之间的通信运输层的两个主要协议运输层的端口 用户数据报协议 UDPUDP 概述UDP 的首部格式 传输控制协议 TCP 概述TCP 最主要的特点TCP 的连接 可靠传输的工作原理停止等待协议连续 ARQ协议 TCP 报文段的首部格式TCP 可靠传输的实现以字节为单…...
shp文件与数据库(创建shp文件)
前言 前面把shp文件中的内容读取到数据库,接下来就把数据库中的表变成shp文件。 正文 简单的创建一个shp文件 暂时不读取数据库的表,先随机创建一个shp文件。既然是随机的,这就需要使用到faker这个第三方库,代码如下。 impor…...
106、Text-Image Conditioned Diffusion for Consistent Text-to-3D Generation
简介 很多工作在扩散先验中注入跨视图一致性,但仍然缺乏细粒度的视图一致性。论文提出的文本到3d的方法有效地减轻了漂浮物(由于密度过大)和完全空白空间(由于密度不足)的产生。 实现过程 简单而言,论文工作是 DreamfusionZero123。 使用两种不同的分数…...
MAC通过终端,使用python3建立本地Web服务
实现局域网Web服务,很简单几句命令,一起看看。 1. 我相信你已经有 brew(Homebrew 包管理器) 了对么? 如果没有可以执行这个方法 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"2. 安…...
闲鱼宝库亮相!闲鱼商品详情关键词搜索电商API接口助你畅享无尽好货!
随着互联网的快速发展,电商平台的崛起已经改变了人们的购物习惯。而在众多电商平台中,闲鱼作为一款社区二手交易平台,一直备受用户喜爱。如今,闲鱼宝库正式亮相,为用户带来了更加全面、详细的商品详情关键词搜索电商AP…...
后台生成随机验证码验证登录
web get请求获取图片 <div class"p2"><img id"imgId" src"/get/code"><a href"#">看不清,换一张</a> </div> 后台代码: /*获取动态验证码*/ ResponseBody RequestMapping(value "/…...
常见的HTTP接口超时问题出现原因及解决办法
HTTP接口超时问题是指在HTTP请求发送到服务器后,由于等待服务器响应的时间超过了预设的超时时间,导致请求被中断。以下是可能导致HTTP接口超时问题的原因和解决方法: 网络延迟或不稳定:网络延迟或不稳定可能导致请求在传输过程中…...
Pandas实战100例 | 案例 54: 日期时间运算
案例 54: 日期时间运算 知识点讲解 当处理带有 datetime 类型数据的 DataFrame 时,Pandas 提供了多种方法来提取和计算日期时间组件。这包括提取年份、月份、日期、星期几以及小时等。 提取日期时间组件: 使用 .dt 访问器,可以从 datetime 类型的列中…...
SDL2 连续帧图像显示
QT使用SDL多窗口显示视频(linux,ubuntu)_linux qt sdl-CSDN博客 QT使用SDL播放YUV视频 - C - QT C 使用SDL显示RGB图像数据_c sdl-CSDN博客 SDL库入门:掌握跨平台游戏开发和多媒体编程_sdl开发-CSDN博客 SDL教程零基础入门 简单…...
回归预测 | MATLAB实现SSA-CNN-GRU-Attention多变量回归预测(SE注意力机制)
回归预测 | MATLAB实现SSA-CNN-GRU-Attention多变量回归预测(SE注意力机制) 目录 回归预测 | MATLAB实现SSA-CNN-GRU-Attention多变量回归预测(SE注意力机制)预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab实现SSA…...
使用composer构建软件包时文件(夹)权限设置
在构建软件包的时候你可能会需要对包源内文件或文件夹的权限做出相应的调整,以确保软件包在部署到客户端后可以正常运行。在此之前我们先来了解一下Apple文件系统内文件或文件夹的权限设定。 常见的文件或文件夹会有Owner, Group, Everyone这三种类型的所有权&#…...
【C#】面向对象的三大特性,还记得吗,简单代码举例回顾
欢迎来到《小5讲堂》 大家好,我是全栈小5。 这是《C#》序列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握。…...
235.【2023年华为OD机试真题(C卷)】机器人搬砖(二分查找-JavaPythonC++JS实现)
🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目二.解题思路三.题解代码Python题解代码JAVA题解…...
git hooks
介绍 当我们在执行git管理仓库代码时,想规范下每个用户的commit内容?想检查下提交的代码规范?想检查下PR是否通过,那么这个时候就需要用到git hooks,git hooks可以在我们进行git操作的关键时机插入我们想要执行的“脚…...
法规更新美国玩具标准ASTM F963-17有更新,最新标准为ASTM F963-23
美国材料试验协会 (ASTM)在10月13日发布了新的玩具安全标准:ASTM F963-23,ASTM F963-17美国联邦法规16 CFR 1250还在使用当中,出口美国的玩具的厂商要引起重视。 ASTM F963-17是什么标准? ASTM F963-17是美国玩具检测标准&#…...
【grpc】利用protobuf实现java或kotlin调用python脚本,含实现过程和全部代码
前言 在一些特殊场景中,我们可能需要使用java或者其他任意语言调用python脚本或sdk等。本文的需求衍生也不例外于此,python端有sdk,但只能在python中调用,于是就有了本文章。 常见的调用方式如jython、python提供http rest接口、…...
Linux网络 ----- 网络文件共享服务之FTP服务
引言 FTP服务是Internet上最早应用于主机之间进行数据传输的基本服务之一。是目前Internet上使用最广泛的文件传送协议 一、FTP概述 FTP(File TransferProtocol,文件传输协议)是典型的C/S架构的应用层协议,需要由服务端软件、客户端软件两个部分共同实…...
如何避免知识付费小程序平台的陷阱?搭建平台的最佳实践
随着知识经济的兴起,知识付费已经成为一种趋势。越来越多的人开始将自己的知识和技能进行变现,而知识付费小程序平台则成为了一个重要的渠道。然而,市面上的知识付费小程序平台琳琅满目,其中不乏一些不良平台,让老实人…...
第89讲:MySQL数据库迁移方面需要考虑的因素以及XBK企业级备份参数
文章目录 MySQL数据库迁移方面需要考虑的因素1.MySQL数据库迁移方面要考虑的因素2.MySQL5.6升级到5.7版本的方法3.MySQL迁移到其他数据库的方法4.为什么要从XBK备份中还原某张表的数据5.从XBK备份中还原某张表的数据6.XtrBackup企业级备份参数 MySQL数据库迁移方面需要考虑的因…...
Windows资源管理器的视觉革命:让iPhone照片在Windows上“活“起来
Windows资源管理器的视觉革命:让iPhone照片在Windows上"活"起来 【免费下载链接】windows-heic-thumbnails Enable Windows Explorer to display thumbnails for HEIC/HEIF files 项目地址: https://gitcode.com/gh_mirrors/wi/windows-heic-thumbnails…...
3大核心功能!茉莉花插件让Zotero中文文献管理效率提升90%
3大核心功能!茉莉花插件让Zotero中文文献管理效率提升90% 【免费下载链接】jasminum A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件,用于识别中文元数据 项目地址: https://gitcode.com/gh_mirrors/ja/jasminum 还在为Zoter…...
Midscene.js 实战(三):使用 LLMs.txt 机制完美适配复杂前端项目
前言:当 AI 测试遇到“看不懂”的前端项目 试想这样一个场景:你花了三天时间给公司的核心业务系统编写了一套 Midscene.js 自动化测试脚本,在开发环境跑得顺风顺水,绿色通过。然后你把脚本部署到测试环境——30 个用例红了 18 个。排查了半天你发现:测试环境的页面用的是…...
JMeter四层断言体系:从HTTP协议到业务语义的全链路校验
1. 为什么JMeter的断言不是“加个检查框”就完事了?很多人第一次在JMeter里点开“添加 → 断言 → 响应断言”,填上一个期望值,跑完线程组一看“绿色对勾”,就以为接口测试闭环完成了。我带过三届测试新人,90%都在这个…...
2026年电工杯AB题|基础可冲!免费参赛 + 高含金量,保研 / 综测加分必看!重磅更新|独家原创|Python|Matlab代码|数学建模|论文|
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
LVF时序变异分析:原理、应用与EDA工具支持
1. 什么是LVF(Liberty Variance Format)?在芯片设计领域,时序分析是确保电路性能符合预期的重要环节。Liberty Variance Format(LVF)是一种用于描述时序变异的新方法,它解决了传统Stage Based O…...
报错注入原理与实战:从数据库错误回显到文件读写
1. 这不是“绕过WAF”的捷径,而是理解数据库报错机制的必修课很多人看到“基于报错的SQL注入”第一反应是:这不就是老掉牙的extractvalue()、updatexml()那些函数吗?复制粘贴payload,跑个工具,弹个弹窗就完事了&#x…...
MoE-GPS框架:动态专家复制的负载均衡优化策略
1. MoE-GPS框架解析:动态专家复制的预测策略指南在大型语言模型(LLM)的实际部署中,混合专家(Mixture-of-Experts, MoE)架构通过动态激活专家子集显著降低了计算开销。然而,多GPU环境下的专家负载…...
避坑指南:CWGCNA因果分析前的数据准备与混杂因素处理(以DNA甲基化数据为例)
CWGCNA因果分析实战:从数据清洗到混杂因素校正的完整指南在生物信息学领域,DNA甲基化数据的因果分析正成为理解表观遗传调控机制的重要工具。CWGCNA(因果加权基因共表达网络分析)作为WGCNA的扩展方法,通过引入中介分析…...
【Python趣味编程】用 Tkinter 打造“爱心便签墙”:一份来自代码的温柔
【Python趣味编程】用 Tkinter 打造“爱心便签墙”:一份来自代码的温柔 文章目录【Python趣味编程】用 Tkinter 打造“爱心便签墙”:一份来自代码的温柔🎯 前言🧠 核心思路关键点:💻 完整代码🔧…...

