避坑:Sql中 in 和not in中有null值的情况说明

 更新时间:2022年07月07日 09:47:58   作者:ispringmw  
这篇文章主要介绍了避坑:Sql中 in 和not in中有null值的情况说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Sql中in和not in中有null值的情况

1)in的逻辑规则是or not in 的逻辑规则是 and

2)判断null 的sql语句为 is not null 或者 is null

3)当遇到 null = null 的判断是时由于不符合null的判断规则,所以结果一定为flase

1.not in 中包含null值的情况

select  *
  from A
  where  A.name not  in 
    (select B.name
          from B )

在上面的not in的查询中如果B表的name字段存在空值时,不论何种情况上述语句的查询结果一定为空

2.in 中包含null值的情况

select  *
  from A
  where  A.name in 
    (select B.name
          from B )

在上面的 in 的查询中如果B表的name字段存在空值时,如果A表中存在name字段也存在空值,那么上述语句的查询结果中不会显示A表中的空值

mysql有默认值但是仍然插入null问题

今天发现项目中对应的某条记录某一列的值为null,但是针对这条记录这一列的值不应该为null。

检查代码发现是在插入的时候没有对这一列对应的成员变量赋值,即便数据库这一列有默认值,在插入到数据库时依然插入了null。

mysql 的默认值只有在insert语句中没有这个字段时才会生效,如果insert中有插入该字段而该字段取值又为null,null值将被插入到表中,默认值此时失效。

在mybatis开发中通常会直接插入一个表对象,表中所有字段都会插入,因此如果要设置默认值,应该在业务层写逻辑,而不能依赖mysql的default来设置默认值。

另外尽量保证对于数据库的新增应该使用动态的sql来进行操作,这样也能避免上面问题。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • mysql 5.7.23 安装配置图文教程

    mysql 5.7.23 安装配置图文教程

    这篇文章主要为大家详细介绍了mysql 5.7.23 安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • Mysql如何查询某条记录在分页的第几页详析

    Mysql如何查询某条记录在分页的第几页详析

    查询是我们日常工作中经常会遇到的一个功能,下面这篇文章主要给大家介绍了关于Mysql如何查询某条记录在分页的第几页的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-11-11
  • MySql范围查找时索引不生效问题的原因分析

    MySql范围查找时索引不生效问题的原因分析

    这篇文章主要给大家介绍了关于MySql范围查找时索引不生效问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • MySQL和Oracle批量插入SQL的通用写法示例

    MySQL和Oracle批量插入SQL的通用写法示例

    当我们要往数据库中批量保存多条数据得时候,分不同数据库,有不同得插入方式,这篇文章主要给大家介绍了关于MySQL和Oracle批量插入SQL的通用写法的相关资料,需要的朋友可以参考下
    2021-11-11
  • MySQL必备基础之分组函数 聚合函数 分组查询详解

    MySQL必备基础之分组函数 聚合函数 分组查询详解

    这篇文章主要介绍了MySQL分组函数、聚合函数、分组查询,结合实例形式分析了MySQL查询分组函数以及查询聚合函数相关使用技巧,需要的朋友可以参考下
    2021-10-10
  • Mysql数据库中datetime、bigint、timestamp来表示时间选择,谁来存储时间效率最高

    Mysql数据库中datetime、bigint、timestamp来表示时间选择,谁来存储时间效率最高

    这篇文章主要介绍了Mysql数据库中datetime、bigint、timestamp来表示时间选择,谁来存储时间效率最高,针对这一问题每人回答方式各不相同,下面分享下我的个人想法,需要的朋友可以参考下
    2021-08-08
  • MySQL如何快速批量插入1000w条数据

    MySQL如何快速批量插入1000w条数据

    这篇文章主要给大家介绍了关于MySQL如何快速批量插入1000w条数据的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Mysql经典高逼格/命令行操作(速成)(推荐)

    Mysql经典高逼格/命令行操作(速成)(推荐)

    这篇文章主要介绍了Mysql命令行操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Mysql中的CHECK约束特性详解

    Mysql中的CHECK约束特性详解

    这篇文章主要介绍了Mysql中的CHECK约束特性详解的相关资料,讲解的十分浅显易懂,这里推荐给大家,需要的朋友可以参考下
    2022-08-08
  • 在windows10上安装mysql详细图文教程

    在windows10上安装mysql详细图文教程

    这篇文章主要介绍了在windows10上安装mysql详细图文教程,本文介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-09-09

最新评论