zoukankan      html  css  js  c++  java
  • mysql 对于有null值的 NOT IN和NOT EXISTS

      SELECT * FROM boys WHERE boys.id  NOT IN (SELECT DISTINCT boyfriend_id FROM beauty)

    上段sql语句中 beauty表是存在boyfriend_id为null值的情况的 查询结果如下

       而使用Exists

      SELECT * FROM boys WHERE NOT EXISTS (SELECT DISTINCT boyfriend_id FROM beauty WHERE boys.`id`=beauty.`boyfriend_id` )

     可以正常查询出没有女朋友的boy表id的

    原因很简单:由于NULL不能进行如何的“操作”

    –如果null参与算术运算,则该算术表达式的值为null。(例如:+,-,*,/ 加减乘除)

    –如果null参与比较运算,则结果可视为false。(例如:>=,<=,<>  大于,小于,不等于)

    –如果null参与聚集运算,则聚集函数都置为null(使用isnull(字段,0)等方式可以避免这种情况)。除count(*), count(1), count(0)等之外(count(字段) 字段为null的行不参与计数)。

    --如果在not in子查询中有null值的时候,则不会返回数据。 

  • 相关阅读:
    第四章、数值计算
    一、bif
    十三、LaTex中的参考文献BibTex
    图像分类数据组织方式
    深度学习中loss总结
    类别不平衡问题
    各种优化器的比较
    机器学习优化器总结
    空洞卷积
    深度学习之语义分割中的度量标准
  • 原文地址:https://www.cnblogs.com/hurui1/p/12664065.html
Copyright © 2011-2022 走看看