MySQL left join on 左表连接字段为null的返回结果

写个博客备忘用...


MySQL 左连接(右连接类似)查询,例 select * from A left join B on A.id = B.id where...

A表是会返回所有符合where条件的记录,B表不满足A.id=B.id的记录则不会返回(同时B也要满足where条件)

如果B的连接字段id本身为null,那么视为不满足on的条件,不返回该条记录。


那么如果A的连接字段A.id也为null,是否可以达到返回B.id为null的记录呢?(直觉上两者都是null不是相等么?)


测试后,发现A.id为null时,会返回A的这条记录,但是连接的B.id为null的相关记录仍不会返回。即联合查询出来的A.* + B.*结果中 B.*全为null,即便B.id有多个为null的记录,A也只返回一条。

所以,在MySQL的联表查询时,null≠null

  • 28
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
Diboot是一个面向开发人员的低代码开发平台,将重复性的工作自动化,提高质量、效率、可维护性。 diboot主要有diboot-core和diboot-devtools组成,diboot-core又为springboot专门封装了diboot-core-spring-boot-starter组件,diboot-devtools也以starter提供。 diboot特点: 1、专门为springboot开发,引入依赖,配置好相对路径即可使用; 2、并且支持较为常用的五种数据库(MySQL,ORACLE,SQLServer,PostgreSQL,MariaDB); 3、代码自动生成到项目相应的目录下; 4、数据结构更改后,可以同步更改对应文件的代码,而不影响到你自己写的代码; 5、基础框架中依靠注解实现的数据关联(一对一、一对多、多对多、数据字典关联等),将关联问题简单化了; 6、对数据关联设置简单,代码生成与更新也可以自动支持一对一、一对多、多对多、数据字典关联; 7、支持开发以及维护过程中对数据库相关数据结构更改进行记录,并写入到对应的数据库更改日志文件中; 8、支持启用lombok的代码形式; 9、支持启用swagger的项目; 10、依赖少、简便轻量、灵活性高。   Diboot轻代码开发平台 更新日志: v2.2.1 新增: @BindQuery注解新增strategy参数,支持空处理策略(默认忽略空字符串) 基于Spring的内存缓存实现(BaseCacheManager),并优化绑定缓存实现 SqlFileInitializer新增executeMultipleUpdateSqlsWithTransaction,支持事务的多SQL更新 BaseService新增IService的getMap(queryWrapper)等接口 @CollectThisApi注解,自动提取注解对应的rest接口 工具类 S.splitToList,D.formatDurationLabel等 优化: 关联绑定的实现中字段名列名的转换由规则转换改为精确转换 支持BindField&BindDict组合使用 BeanUtils.convertValueToFieldType支持LocalDateTime转换 修复: 修复@BindQuery查询不支持自定义逻辑删除字段问题 升级依赖jar至最新(spring boot 2.4.5, mybatis-plus 3.4.2等)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值