3.关联表时出现null字段 您所在的位置:网站首页 db2查询结果去空 3.关联表时出现null字段

3.关联表时出现null字段

2023-08-15 12:55| 来源: 网络整理| 查看: 265

在实际工作中,经常会遇到需要关联表的场景,常见的关联有左连接,右连接,内连接等。关联的时候需要做到对相应的关联字段做关联,避免出现数据发散。有时候会发现需要关联的字段有null的出现,那么假如两个表中关联字段出现null=null的情况,是否会对他进行关联呢? 验证开始:

建表:

create table if not exists user1 ( id numeric(5), name varchar(50), count numeric(5) ); create table if not exists user2 ( id numeric(5), name varchar(50), count numeric(5) )

插入数据,其中name字段设置为null

insert into user1 values (1,null,10);

insert into user2 values (1,null,10), (2,null,20), (3,null,30)

内连接验证: 连接条件没有null字段情况:

mysql>select a.id,a.name,(a.count+b.count) from user1 a, user2 b where a.id=b.id

结果如下: 在这里插入图片描述 果然出现了数据发散的情况。

连接条件出现null字段情况:

mysql>select a.id,a.name,(a.count+b.count) from user1 a, user2 b where a.id=b.id and a.name=b.name

结果如下: 在这里插入图片描述 我们发现内连接条件出现null=null情况时,数据库并不会将他们相互关联。

左连接验证: 连接条件没有null字段情况:

mysql>select a.id,a.name,(a.count+b.count) from user1 a left join user2 b on a.id=b.id

结果如下: 在这里插入图片描述 同样出现了数据发散的情况。

连接条件出现null字段情况:

mysql>select a.id,a.name,(a.count+b.count) from user1 a left join user2 b on a.id=b.id and a.name=b.name

结果如下: 在这里插入图片描述 我们发现内连接条件出现null=null情况时,数据库也并不会将他们相互关联。只会将相应字段进行null操作显示的情况。

结论:我们可以同时发现,数据库中null=null的情况,数据库会给出null的结果,也就是说他并不会认为null与null相等,同样也就不会对这种情况作出更多的后续操作,因为在关联表的时候也不会出现因为null字段相等从而出现数据发散的情况。但是考虑到相应字段可能应用了索引,所以我们最好给字段设置一个默认值,这样就不用去判断null的情况,也可以避免出现索引失效从而引起全表扫描的极端情况。


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有