概述
在实际工作中,经常会遇到需要关联表的场景,常见的关联有左连接,右连接,内连接等。关联的时候需要做到对相应的关联字段做关联,避免出现数据发散。有时候会发现需要关联的字段有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的情况,也可以避免出现索引失效从而引起全表扫描的极端情况。
最后
以上就是细腻御姐为你收集整理的3.关联表时出现null字段的全部内容,希望文章能够帮你解决3.关联表时出现null字段所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复