避坑: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是如何处理排序的(最新推荐)

    MySQL是如何处理排序的(最新推荐)

    在MySQL的查询中常常会用到order by和group by这两个关键字,它们的相同点是都会对字段进行排序,那查询语句中的排序是如何实现的呢,下面跟随小编一起看看吧
    2024-05-05
  • SQL的substring_index()用法实例(MySQL字符串截取)

    SQL的substring_index()用法实例(MySQL字符串截取)

    substring_index (字符串,分隔符,序号),主要作用是用于截取目标字符串,下面这篇文章主要给大家介绍了关于SQL中substring_index()用法(MySQL字符串截取)的相关资料,需要的朋友可以参考下
    2023-01-01
  • 深入理解mysql事务与存储引擎

    深入理解mysql事务与存储引擎

    本文主要介绍了mysql事务与存储引擎,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • 详解MySQL安装及MySQL8.0新密码认证方式

    详解MySQL安装及MySQL8.0新密码认证方式

    这篇文章主要介绍了详解MySQL安装及MySQL8.0新密码认证方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • mysql的语句查询顺序、耗时分析以及查询调优技巧分享

    mysql的语句查询顺序、耗时分析以及查询调优技巧分享

    文章详细介绍了MySQL中SQL查询语句的执行顺序、耗时分析及查询调优方法,包括使用EXPLAIN、SHOW PROFILE和慢查询日志等工具进行耗时分析,以及使用索引、避免全表扫描、优化查询语句、分区表和调整服务器配置等技巧进行性能优化
    2025-02-02
  • MySQL分区表的正确使用方法

    MySQL分区表的正确使用方法

    这篇文章主要给大家介绍了关于MySQL分区表的正确使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • MySQL数据库中删除重复记录简单步骤

    MySQL数据库中删除重复记录简单步骤

    这篇文章主要给大家介绍了关于MySQL数据库中删除重复记录的相关资料,在使用数据库时,出现重复数据是常有的情况,但有些情况是允许数据重复的,而有些情况是不允许的,当出现不允许的情况,我们就需要对重复数据进行删除处理,需要的朋友可以参考下
    2023-08-08
  • MySQL 实例无法启动的问题分析及解决

    MySQL 实例无法启动的问题分析及解决

    这篇文章主要介绍了MySQL 实例无法启动的问题分析及解决方法,帮助大家更好的理解和学习使用MySQL数据库,感兴趣的朋友可以了解下
    2021-03-03
  • MySQL 5.7忘记root密码后修改的详细教程

    MySQL 5.7忘记root密码后修改的详细教程

    因为长时间不操作mysql而忘记root密码的朋友估计不在少数,最近发现在MySQL 5.7版本下用之前的方法修改密码不能成功了,所以只能重新想办法解决,下面这篇文章主要给大家介绍了MySQL 5.7忘记root密码后修改的详细教程,需要的朋友可以参考。
    2017-05-05
  • log引起的mysql不能启动的解决方法

    log引起的mysql不能启动的解决方法

    今天服务器挂了原来服务器的硬盘进行了数据转移 弄到mysql的时候发现里面log日志文件高达900MB
    2008-07-07

最新评论